保存android.app.Application状态

时间:2010-08-09 13:51:11

标签: android restore savestate

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

是否有任何猜测如何在Application子类上执行保存/恢复状态?

UPDATE 我已经设法通过填充从onSaveInstanceState获得的Bundle并恢复onCreate中的值来实现。但还有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

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

参考onCreate()

  

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

参考onPause()

  

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

使用Bundle对象是应用程序被杀死时保存状态的方式。 onPause()方法应该是您的应用程序的一个信号,它现在处于可以被杀死以回收资源的状态。 onCreate()方法传递一个bundle,以便它可以获取应用程序之前停止的位置,以提供无缝的用户体验,同时仍允许系统在需要资源时终止应用程序。