2017-05-25 50 views
1

我想知道,在重新創建活動或重新創建片段或重新創建服務時,是否有可能重新使用同一個類的實例?onDestroy後面跟onCreate是否發生在同一個類實例上?

例如

//public class HomeFragment extends Activity { 
//public class HomeFragment extends Service { 
public class HomeFragment extends Fragment { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     // Can instrumentSearchMonitor has possibility to become null right here, due to onDestroy? 
     instrumentSearchMonitor.doSomething(); 
    } 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 

     instrumentSearchMonitor = null; 
    } 

    private InstrumentSearchMonitor instrumentSearchMonitor = new InstrumentSearchMonitor(); 
} 

對於上述情況下,是有一種可能性,即onCreate會遇到一個空對象,由於在onDestroy以抵消作用?

我的測試是,在onDestroy被調用後,onCreate的下一個調用將發生在不同的類實例上。

我想知道,是否有任何可能性,onCreate的下一個調用將發生在同一個類實例上?

回答

1

一旦onDestroy()被調用,片段將被完全移除並且不能被重用。

這可以看出,在片段的生命週期:
https://i.stack.imgur.com/fRxIQ.png

在圖像可以SEEE是onDestroyView()可以調用,然後它可以追溯到onCreateView(),但一旦onDestroy()叫你」重新安全地空/刪除任何你想在該類實例。

0

把你的代碼上面的onDestroy

@Override 
    public void onDestroy() { 
     instrumentSearchMonitor = null; 
     super.onDestroy(); 

    } 
相關問題