【问题标题】:Activity Lifecycle: Why is it set to "Paused" and not "Stopped"活动生命周期:为什么设置为“暂停”而不是“停止”
【发布时间】:2012-12-29 18:26:32
【问题描述】:

为了让我在假期里保持忙碌,我决定学习 Android 开发。

所以我正在关注tutorial 关于活动生命周期的信息。在链接的文章中,它说:

在正常的应用使用过程中,前台活动有时会受到阻碍 由导致活动暂停的其他视觉组件。为了 例如,当一个半透明活动打开时(例如 对话框样式),前一个活动暂停。只要 活动仍然部分可见,但目前不是 焦点,它保持暂停。

但是,一旦活动被完全阻塞且不可见,它 停止(在下一课中讨论)。

我下载了示例应用。示例应用程序有 3 个活动,每个活动都有从 Intent 启动另一个活动的按钮。当我单击“开始 B”时,我预计 Activity A 的状态应该是“已停止”,因为它现在完全被 Activity B 的布局所阻挡。但是,它被设置为“暂停”。

Activity A 的状态变为已停止的唯一一次是我从 Activity B 的布局中单击“开始 C”。

为什么会这样?是因为较新的 Android 版本上存在一些优化还是我误解了这篇文章?

【问题讨论】:

    标签: android android-lifecycle


    【解决方案1】:

    这是我通过艰难的方式学到的东西 - Google 的 Android 文档并非对所有内容都完全准确!

    有时,系统会优化某些似乎偏离文档的行为。要确切了解某件事的工作原理,唯一的方法是通过深入研究source!。

    如果您的应用依赖于某些系统级行为,例如停止和暂停以完全按照宣传的特定顺序运行,那么您将很难过。此行为由系统控制,不提供任何保证。

    我发现解决此问题的最佳方法是找出 Google 向开发人员承诺的合同并坚持下去。例如,在这种情况下,合约说如果您遵守规则,在需要时执行所需的生命周期回调,那么它将起作用,您不需要确切知道在什么情况下调用onStop()onSaveInstanceState()onPause()onDestroy() 等。

    换句话说,如果您通过实现 onPause() 来执行应用暂停时需要执行的操作,那么您无需确切知道您的活动何时暂停。暂停/恢复由系统控制,可能会因版本而异(如果他们选择自定义此行为,甚至可能因制造商而异)。

    希望在我开始的时候有人告诉我。这会为我节省很多时间和挫败感。希望这会有所帮助。

    【讨论】:

    • 我只是想确保我正确理解了材料。
    • 我知道。但这些材料并不全面,有时往往会简化某些在实践中更为细微的行为。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-09
    • 1970-01-01
    • 2018-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多