【问题标题】:Save android.app.Application state保存 android.app.Application 状态
【发布时间】:2010-08-09 13:51:10
【问题描述】:

我在使用自己的 android.app.Application 子类时遇到了问题。我的应用程序中有许多活动,并且我正在运行一个消耗大量内存的自定义 ROM。发生的情况是当我启动第三方活动(相机)时,我的应用程序被杀死。我的应用程序子类存储整个应用程序的重要数据,因此没有它就无法工作。 android.app.Application 没有任何保存或恢复应用程序状态的方法。 Activity 确实有,但不合适。

任何猜测如何在应用程序子类上执行保存/恢复状态?

更新 我已经通过填充从 onSaveInstanceState 获得的 Bundle 并在 onCreate 中恢复值来做到这一点。但是有没有更好的办法呢?

【问题讨论】:

    标签: android restore savestate


    【解决方案1】:

    根据http://developer.android.com/guide/topics/fundamentals.html

    参考onCreate()

    在首次创建活动时调用。这是您应该进行所有常规静态设置的地方——创建视图、将数据绑定到列表等等。如果捕获了该状态,则向该方法传递一个包含 Activity 先前状态的 Bundle 对象(请参阅稍后的保存 Activity 状态)。 始终跟在 onStart() 之后。

    参考onPause()

    当系统即将开始恢复另一个活动时调用。此方法通常用于提交对持久数据的未保存更改、停止动画和其他可能消耗 CPU 的事情等。它应该很快地完成它所做的任何事情,因为下一个活动在它返回之前不会恢复。 如果活动返回到前面,则跟随 onResume(),如果对用户不可见,则跟随 onStop()。

    使用Bundle 对象是您应该在应用程序被终止时保存状态的方式。 onPause() 方法应该是向您的应用程序发出的信号,表明它现在处于可以被杀死以回收资源的状态。 onCreate() 方法被传递一个包,以便它可以从应用程序先前停止的地方继续,从而提供无缝的用户体验,同时仍然允许系统在需要资源时终止应用程序。

    【讨论】:

    • android.app.Application 不是Activity
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-14
    • 2012-05-02
    • 2012-08-18
    • 2013-08-27
    相关资源
    最近更新 更多