Fragment onStop() 与 onDetach()、onDestroy() 或 onDestroyView() 相同吗?

Fragment onStop() versus onDetach(), onDestroy() or onDestroyView() of the same?

这是 Android 中的新开发者值得提出的问题。

想法是为了深入理解为什么框架是这样写的。 此外,开发人员还面临悬挂指针、非法状态和此类 运行 次崩溃,他们不知道为什么会发生这种情况。

程序员现在经常大量使用回调和工厂模式。使用委托 class 对象减少了对 Singleton classes 的需要,以及 C、C++ 等语言中多重继承的需要。

当开发人员开始了解组件之间基于处理程序的消息传递时,他们会兴奋不已。

知道 Fragment 的上下文不应再由其组件使用,或者在作为它的父级的 Activity 之外使用这些方法中的哪一种更可靠:

  1. onStop()
  2. onDetach()
  3. onDestroyView()
  4. onDestroy()

此致。

请仔细阅读此link以了解 Fragments 的生命周期

它表示,虽然您当前的片段(您可以在应用程序扩展 class 中使用 getter 和 setter 进行跟踪)处于死亡阶段,getView(),并且 getActivity() 将 return null。所以你不应该使用这些方法并且要小心相关的生命周期回调(同样可以使用抽象 BaseFragment/BaseActivity sub-[=22 中的布尔 getters 和 setters 进行跟踪=]es 的常规具体片段和 Activity classes).

source

我正在跟踪所有这些方法,以停止使用 getView() 片段。我逻辑上觉得 onDestroy(),是最适合这个目的的方法。

我在这个答案中以同样的方式使用跟踪器:

这种继承策略极大地帮助和改进了 ActivityFragments 生命周期的意义。事实上,它是如此强大,以至于你可以拥有那些没有隐含提供的功能:就像你可以处理系统后退(在 BaseActivityonBackPressed() 方法中管理)每当按下 Fragment,你可以阻止 back pressed event 调用,直到满足某些条件,或者放置一个 OK_Cancel confirmation alert,表明你是否真的要退出当前片段。

编码愉快:-)