我想知道,在活动重新创建或片段重新创建或服务重新创建期间,是否有可能重新使用类的相同实例?
例如
//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
的下一次调用将发生在同一个类实例上?
答案 0 :(得分:1)
调用onDestroy()
后,片段将被完全删除,无法重复使用。
这可以在片段生命周期中看到:
https://i.stack.imgur.com/fRxIQ.png
在图像中,您可以看到onDestroyView()
可以被调用,然后它返回到onCreateView(),但是一旦onDestroy()
被调用,您就可以安全地删除/删除任何内容你想要在那个班级实例中。
答案 1 :(得分:0)
将您的代码放在onDestroy上面
@Override
public void onDestroy() {
instrumentSearchMonitor = null;
super.onDestroy();
}