Android是否有将应用程序状态存储到磁盘的方法

时间:2013-04-23 09:21:52

标签: android wakelock

我想在我的应用中以特定时间间隔执行唤醒锁。如果Android可以在释放唤醒锁之前将我的应用程序的整个状态存储到磁盘,然后在AlarmManager警报或其他某个进程想要启动我的应用程序时重新加载,那就太好了。目前,我将大量变量存储到磁盘,并在重新启动应用程序时重新加载它们。如果您进入待机模式,Microsoft Windows会执行此操作。只是想知道Android是否支持类似的东西。

1 个答案:

答案 0 :(得分:2)

我认为存储整个应用程序状态没有好方法。保存应用程序的状态时,无需存储每个变量。大多数变量都可以指向运行时对象(如表面)。并且不应该保存这些,以及任何解压缩的图像,声音等。相反,在恢复时,您应该再次从APK资源加载它们。如果没有程序员的工作,我认为没有有效的方法可以做到这一点。抱歉,有人必须知道应用程序加载了什么。

我认为你误解了智能手机的工作方式和行为方式。或许我误解了你的问题。如果你在谈论桌面上的MS Windows以及它们如何休眠,这与手机的工作方式以及用户如何使用它们完全不同。在Windows CE上,睡眠到内存可能运行良好,您只需存储您所做的一切并停止CPU。在单一用途设备上,如导航设备,它是足够和良好的工作。您可以通过关闭设备关闭导航,然后打开电源意味着您再次开始导航。完整操作系统的恢复在这里很好。

但智能手机不会像整个设备一样入睡。他们有很多应用程序。如果一个应用程序不需要做任何事情,那并不意味着整个设备可以因此而睡觉。这是电话,你必须能够接听电话。收到邮件。使用GPS记录您的曲目。与休眠窗口不同,操作系统本身必须继续运行。

因此,只需序列化恢复到旧状态所需的最少信息。系统无法为您执行此操作,因为您在一小时前创建的网络连接无效,文件可能会被其他应用程序移动。如果您的活动或服务是由AlarmManager启动的,则必须存储您之前所做的事情。使用SharedPreferences或Sqlite数据库。如果您有简单数据,请仅使用OnSaveInstanceState包。

你想解释一下你想要完成什么?我想你想以错误的方式设计你的应用程序。