使用 Android 2.1+。我有一个服务,由于内存压力等原因,会不时被操作系统终止。
该服务使用类的静态成员字段维护某些状态。我期望静态字段保持其值,尽管服务被操作系统杀死并重新启动。
但似乎并不是这样。在重新启动后,静态变量重置为默认值。这是期望发生的吗?应该使用其他方法来保持持久状态以免被终止/重新启动吗?
是的,当您的服务被终止时就会发生这种情况。程序被从内存中清除,再次加载到内存时,所有静态变量的默认值都会被假定。换句话说,程序的字节码在每次执行时都不会改变。
通常认为使用静态变量来保持状态是不好的。尝试将它们存储在持久性存储介质中,比如sqlite数据库。