【发布时间】:2013-12-03 20:14:02
【问题描述】:
嗯,在我的 Android 应用程序中,我很少有单例对象来处理整个应用程序的一些需求(如服务器请求、数据下载、应用程序内日志收集器和其他一些需求)。
所有这些单例对象都有自己的状态并存储一些完整的应用程序数据(如服务器上打开的用户会话或其他)。屏幕上显示的大多数活动在(重新)创建视图期间使用单例数据。另一方面,活动就像“前景/视图”,而单例对象就像“背景”。
有时在应用程序使用过程中,用户切换到主屏幕或其他应用程序。 在最后一个活动从屏幕上隐藏一段时间后,我们让应用程序主线程运行,所有单例对象都存在于内存中并在该线程中工作。
最后一个是我想要的 - 尽可能将所有单例对象存储在“背景”中。 (几乎没有什么原因,例如“初始化所有这些可能需要一些时间”(如果用户在最近的时间返回应用程序,我不想开始重新初始化)或“一些网络功能需要通过向服务器的通知正确完成 "...)
但是 - 有一段时间,当 android 决定是杀死所有没有显示活动的进程的好时机。为了释放一些记忆,可能是因为心情不好。 它使用我的所有单例对象破坏了主应用程序进程。
这里是我的问题:我需要处理那个时刻——为了保存我的单例对象的内部状态,或者只是为了制作像“我被关闭”这样的日志注释——我不这样做不知道该怎么做。 (例如,在那种情况下不调用 .finalize())。
处理应用程序单例对象销毁(不是活动!)的最佳方式是什么。
ps:谢谢,抱歉英语不好)
【问题讨论】: