【问题标题】:Must I persist Activity data when onStop() fires?我必须在 onStop() 触发时保留活动数据吗?
【发布时间】:2013-01-21 16:46:21
【问题描述】:

我发现有关Activity lifecycle 的官方文档不清楚。它充斥着诸如应该可能之类的词,这让我想知道我必须做什么。当谈到 onStop() 方法时,文档说明如下:

注意:由于系统在停止时会将您的 Activity 实例保留在系统内存中,因此您可能根本不需要实现 onStop() 和 onRestart()(甚至是 onStart() 方法。

可能?我是还是不是?假设我有一些自定义组件,它们依赖于在 Activity 类中定义为私有变量的一些标准 Java 对象。我是否需要在 onStop 方法中保留这些对象?我可以保证在 onRestart() 触发时这些变量具有相同的内容吗?

编辑:link to table 在回答中提到。

【问题讨论】:

    标签: android android-activity android-lifecycle


    【解决方案1】:

    对于您的具体问题,您需要考虑概览表中的 killable 列。在调用 onPause() 之后,Android(Honeycomb 之前)认为您的 Activity 可终止。因此,如果您需要持久性来进行下一次调用,并且希望在 Activity 级别上处理它,那么您可以在此处保存您的 Activity 状态。

    【讨论】:

    • honeycomb+在这方面有什么不同?
    • @Nilzor 请参考official Android documentationActivity Lifecycle下有Killable?列的表格;它包含您需要的所有信息,除非我不明白您的意思。
    • 我明白了,我只是参考了您的评论“pre-Honeycomb”,并想知道 Android 行为在 onPause post-Honecomb 方面有何变化
    • 我还想补充一点,因为 Android 可能会在 onPause 之后终止应用程序,因此文档应该更确切地说是所有开发人员必须在此阶段保留他们的重要数据。由于这种草率的措辞,我无法想象商店中有多少应用程序存在错误。
    • @Nilzor 唯一的区别是 Honeycomb 和更高版本可能会在调用 onStop() 后终止您的应用程序,而 pre-Honeycomb 可能已经在调用 onPause() 后终止您的应用程序。
    猜你喜欢
    • 1970-01-01
    • 2011-08-29
    • 2017-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-30
    • 2013-10-13
    相关资源
    最近更新 更多