是否保证为片段调用onDestroy()?

时间:2014-02-10 03:16:41

标签: android android-fragments

我知道不能保证调用活动onDestroy(...)。根据文档,

  

在某些情况下,系统会在没有>调用此方法(或其他任何其他方法)的情况下简单地终止活动的托管过程,因此不应该使用它来执行>旨在在此过程后保留的内容走了。

这是否也适用于碎片?文档中没有说明任何内容,只是想确定。

1 个答案:

答案 0 :(得分:10)

我相信Fragment的onDestroy()不能保证被称为Activity。

在活动的performDestroy()中:

 final void performDestroy() {
    mDestroyed = true;
    mWindow.destroy();
    mFragments.dispatchDestroy();
    onDestroy();
    if (mLoaderManager != null) {
        mLoaderManager.doDestroy();
    }
}

如果您深入了解源代码,那么mFragments.dispatchDestroy()将最终调用片段onDestroy()。因此,如果未调用Activity onDestroy(),则不会调用片段onDestroy()

还有其他一些链接:

fragment lifecycle: when "ondestroy" and "ondestroyview" are not called?

Android fragments lifecycle onStop, onDestroyView, onDestroy and onDetach