【发布时间】:2010-10-10 00:22:25
【问题描述】:
我需要我的 Android 应用在其活动被置于后台或被终止时将其状态保存到磁盘。有人建议我在调用 onPause() 时启动一个线程并在那里执行任何昂贵的 I/O 过程(请参阅Saving/loading document state quickly and robustly for image editor)。
操作系统会在什么情况下终止线程,这些情况发生的频率如何?
我认为这就像处理活动的方式一样,操作系统可以任意决定终止线程,但大多数情况下只会在资源极其有限时才这样做。不过,如果能找到一些具体的文档就好了。
通过使用一些测试代码,在 onPause() 中启动的后台线程将在我的设备上无限期地在后台运行(我尝试加载大量应用程序但无法将其杀死)。
对于我的特定应用程序,我正在编写一个位图编辑器,其中我使用命令模式和备忘录模式来允许撤消和重做编辑。我希望用户能够撤消/重做他们的编辑,甚至例如用户接到电话,活动在后台被终止。我能想到的最佳解决方案是使用后台线程在应用程序使用期间不断将我的命令和备忘录对象保存到磁盘,并在调用 onPause 时完成保存留在后台线程中的任何对象。在最坏的情况下,如果线程被杀死,我只会丢失一些编辑。
【问题讨论】:
标签: java android multithreading mobile