【问题标题】:When will onResume() be called without onStart() being called first (Fragment Lifecycle)什么时候会调用 onResume() 而不会先调用 onStart()(片段生命周期)
【发布时间】:2018-02-13 05:28:43
【问题描述】:

onStart() 是 Fragment 变为可见时,onResume() 是 Fragment 变为交互式时。那么onResume() -> onPause() -> onResume() 循环何时执行而不执行包含的onStart() -> onStop() 循环?

fragment 转换而言,替换将销毁起始片段,调用其onPause() -> onStop() 以及其他与销毁相关的生命周期方法。如果转换是替换但将起始fragment 添加到**backStack**,它仍然会调用onPause() -> onStop(),除非没有完全破坏片段并将其与活动分离。在仅覆盖另一个片段的情况下,不会执行起始片段的 lifecycle 事件,因为它仍然存在,只是不可见(另一个片段被绘制在它上面)。

我不确定什么时候会在没有onStart() 的情况下调用onResume(),以及在没有onStop() 的情况下调用onPause()

编辑:除了这里已经有的答案,使用 android 分屏也会暂停片段而不停止它。

【问题讨论】:

  • 我认为在使用警报对话框时,当警报对话框被调用时,片段将转到 onPause(),当警报对话框关闭时,它会调用 onResume()
  • 我相信使用分屏也可以做到这一点。

标签: android android-fragments fragment-lifecycle


【解决方案1】:

当您的活动在显示对话框时保持可见或其他活动显示在具有透明度的顶部时。

基本上你的活动在onStart()onStop()之间是可见的,你的活动在onResume()onPause()之间是交互的。当它在保持可见的同时变得非交互时,您将在没有 onStop 的情况下获得 onPause。

【讨论】:

    猜你喜欢
    • 2017-10-16
    • 1970-01-01
    • 2014-10-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-06
    • 1970-01-01
    • 1970-01-01
    • 2012-11-21
    相关资源
    最近更新 更多