onDestroy后跟onCreate可以在同一个类实例上发生吗?

时间:2017-05-25 22:31:37

标签: android

我想知道,在活动重新创建或片段重新创建或服务重新创建期间,是否有可能重新使用类的相同实例?

例如

//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的下一次调用将发生在同一个类实例上?

2 个答案:

答案 0 :(得分:1)

调用onDestroy()后,片段将被完全删除,无法重复使用。

这可以在片段生命周期中看到:
https://i.stack.imgur.com/fRxIQ.png

在图像中,您可以看到onDestroyView()可以被调用,然后它返回到onCreateView(),但是一旦onDestroy()被调用,您就可以安全地删除/删除任何内容你想要在那个班级实例中。

答案 1 :(得分:0)

将您的代码放在onDestroy上面

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

    }