我想在我的应用程序中以特定时间间隔执行唤醒锁。如果 Android 可以在唤醒锁被释放之前将我的应用程序的整个状态存储到磁盘,然后在 AlarmManager 警报或其他一些进程想要启动我的应用程序时重新加载,那就太好了。目前我将很多变量存储到磁盘并在应用程序再次重新启动时重新加载它们。如果您进入待机模式,Microsoft Windows 会执行此操作。只是想知道Android是否支持类似的东西。
1 回答
我认为没有存储整个应用程序状态的好方法。保存应用程序的状态时,无需存储每个变量。大多数变量可能是指向运行时对象(如表面)的指针。不应该保存这些,以及任何解压缩的图像、声音等。相反,在恢复时,您应该再次从 APK 资源加载它们。如果没有程序员的工作,我认为没有有效的方法可以做到这一点。抱歉,必须有人知道加载什么应用程序。
我认为您误解了智能手机的工作方式和行为方式。或者,也许我误解了你的问题。如果您谈论的是桌面上的 MS Windows 以及它们如何休眠,那与手机的工作方式和用户使用它们的方式完全不同。在 Windows CE 上,睡眠到内存可能工作得很好,你只需存储你所做的一切并停止 CPU。在单一用途的设备上,比如导航设备,它已经足够了,而且运行良好。您通过关闭设备来关闭导航,打开电源意味着您再次开始导航。完整操作系统的恢复在这里很好。
但是智能手机不会作为整个设备进入睡眠状态。它们有很多应用。如果一个应用程序不需要做任何事情,这并不意味着整个设备都可以因此而休眠。它是电话,您必须能够接听电话。接收邮件。使用 GPS 记录您的轨迹。与休眠的窗口不同,操作系统本身必须继续运行。
因此,只需序列化您需要恢复到旧状态的最少信息。系统无法为您执行此操作,因为您一小时前创建的网络连接无效,文件可能被其他应用程序移动。如果您的活动或服务是由 AlarmManager 启动的,则您必须存储自己之前所做的事情。使用 SharedPreferences 或 Sqlite 数据库。如果您有简单的数据,请仅使用 OnSaveInstanceState 包。
你想解释你想要完成什么吗?我认为您想以错误的方式设计您的应用程序。