我有一项启动服务的活动。还涉及单身Data
。当我通过转到主屏幕关闭活动时,Data
单例会在一段时间后被破坏,但是,应该这样,服务会继续运行。因此,Data
的某些字段会再次成为null
,并且服务会遇到空指针。
如何防止这种情况发生?
答案 0 :(得分:6)
据我所知,为了安全起见,Activity
实例会在自己的类加载器中启动。附加到由于加载Activity
而加载的类的任何单例都与该类加载器绑定,后者又与活动生命周期相关联。
也就是说,我认为你不能保证不会发生这种情况,因此,不应该依赖它。
您需要序列化任何持久状态,然后在Activity
启动时对其进行反序列化。
答案 1 :(得分:1)
我们实现此目的的一种方法是在您创建的Application
的子类中存储对象的引用。这是一个简单的解决方法,适用于大多数情况,无需创建Service
或必须始终序列化状态。