gpt4 book ai didi

android - Activity 生命周期 : Why is it set to "Paused" and not "Stopped"

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:05:40 25 4
gpt4 key购买 nike

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

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

During normal app use, the foreground activity is sometimes obstructed by other visual components that cause the activity to pause. For example, when a semi-transparent activity opens (such as one in the style of a dialog), the previous activity pauses. As long as the activity is still partially visible but currently not the activity in focus, it remains paused.

However, once the activity is fully-obstructed and not visible, it stops (which is discussed in the next lesson).

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

唯一一次 Activity A 的状态变为 Stopped 是当我从 Activity B 的布局中单击“Start C”时。

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

Screenshot

最佳答案

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

有时,系统会优化某些似乎偏离文档的行为。确切知道某事如何工作的唯一方法是通过艰难的方式 - 通过挖掘 source !

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

我发现处理此问题的最佳方法是找出 Google 向开发人员 promise 并遵守的契约(Contract)。例如,在这种情况下,契约(Contract)说,如果您遵循规则,在需要时执行所需的生命周期回调,那么它就会起作用,而您不需要确切地知道在什么情况下onStop(), onSaveInstanceState(), onPause(), onDestroy() 等被调用。

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

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

关于android - Activity 生命周期 : Why is it set to "Paused" and not "Stopped",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14084661/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com