我知道不能保证调用活动onDestroy(...)
。根据文档,
在某些情况下,系统会在没有>调用此方法(或其他任何其他方法)的情况下简单地终止活动的托管过程,因此不应该使用它来执行>旨在在此过程后保留的内容走了。
这是否也适用于碎片?文档中没有说明任何内容,只是想确定。
答案 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