【问题标题】:Is Fragment.onStop() guaranteed to be called?是否保证会调用 Fragment.onStop()?
【发布时间】:2015-04-01 12:23:16
【问题描述】:

来自此链接的表格:http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

我们可以看到,在调用 onStop() 之后(对于 Honeycomb 及以后),Android Activity 是不可终止的。

我们对 Fragments 有相同的(记录在案的)保证吗?

非常感谢有人指出明确说明的文档。

编辑:正如已经指出的那样,[Fragment.onStop]通常与包含 Activity 生命周期的 Activity.onStop 相关联。

http://developer.android.com/reference/android/app/Fragment.html#onStop()

但这并没有告诉我 Fragment 的 onStop() 是有保证的(至少没有达到 Activity 文档给出的相同级别的清晰度。)是否有明确说明 Fragment.onStop() 保证的地方?

编辑 2:基于下面的讨论,我们现在正在讨论是否保证 Activity.onStop()(假设如果没有,那么 Fragment.onStop 也不能保证)。我已将有关 Activity.onStop 的问题移至新线程:Is Activity.onStop() guaranteed to be called (API 11 +)

在我看来,确保调用 Activity.onStop 以保证也保证调用 Fragment.onStop 是必要的,但还不够。

【问题讨论】:

    标签: android android-fragments android-lifecycle


    【解决方案1】:

    onStop() 片段不再对用户可见,因为它的活动正在停止或片段操作正在活动中修改它。

    这通常与包含 Activity 生命周期的 Activity.onStop 相关联。

    http://developer.android.com/reference/android/app/Fragment.html#onStop()

    在Low memory中,不保证activity和fragment都会调用onStop()方法

    请注意,在调用 onPause() 方法后系统没有足够内存来保持 Activity 进程运行的低内存情况下,可能永远不会调用此方法。

    http://developer.android.com/reference/android/app/Activity.html#Fragments

    【讨论】:

    • 那句话中的“一般”一词并没有给我所需要的信心——它推断可能无法保证片段上的 onStop。
    • @Villa 用户向后导航或片段被替换/删除 onStop 被调用
    • 我最关心的情况是Fragment的进程在内存不足的情况下停止。在这些条件下,可以保证调用 Activity.onStop(),但不保证调用 Activity.onDestroy()。我的问题旨在发现这些相同的保证是否适用于 Fragment。通过仔细阅读文档,我无法在任何地方找到 Fragments 的保证。我并不特别关心在各种导航下通常会发生什么,我非常了解这些。我关心的是明确记录的运行时保证。
    • @Villa 在低内存中,不能保证活动和片段都会调用 onStop() 方法。还要检查我的更新答案
    • 这很有趣。您对答案的更新似乎与我在原始帖子中的第一个链接相矛盾。在“可杀?”该表的列表示只有在 onStop(来自 Honeycomb)之后才能杀死 Activity。那么这两者中的哪一个是真实的。我之前读过你上面引用的部分“注意这个方法可能永远不会被调用......”的意思是:因为 pre-honeycomb 不保证 onStop() 那么方法文档说它可能永远不会被调用。现在我不确定了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-06
    • 1970-01-01
    • 2019-10-05
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    • 2011-08-29
    相关资源
    最近更新 更多