删除Android服务和静态变量

删除Android服务和静态变量,android,service,static,Android,Service,Static,使用安卓2.1+。我有一个服务不时被操作系统杀死(我想是因为内存压力) 此服务使用类的静态成员字段维护某些状态。我希望静态字段保持它们的值,尽管服务被操作系统终止并重新启动 但似乎事情不是这样发生的。重新启动后,静态变量将重置为默认值。 这是应该发生的吗?我是否应该使用另一种方法在终止/重新启动时保持持久状态?是的,这就是服务终止时发生的情况。程序从内存中取出,当它重新加载到内存中时,静态变量的默认值都是假定的。换句话说,程序的字节码不能在不同的执行过程中改变 使用静态变量来保持状态通常被认为是

使用安卓2.1+。我有一个服务不时被操作系统杀死(我想是因为内存压力)

此服务使用类的静态成员字段维护某些状态。我希望静态字段保持它们的值,尽管服务被操作系统终止并重新启动

但似乎事情不是这样发生的。重新启动后,静态变量将重置为默认值。
这是应该发生的吗?我是否应该使用另一种方法在终止/重新启动时保持持久状态?

是的,这就是服务终止时发生的情况。程序从内存中取出,当它重新加载到内存中时,静态变量的默认值都是假定的。换句话说,程序的字节码不能在不同的执行过程中改变


使用静态变量来保持状态通常被认为是不好的。尝试将它们存储在现有的存储中,比如sqlite数据库。

我还想指定,由于静态字段被重置,这意味着操作系统会终止整个应用程序Java进程。是的,这种情况时有发生,看看这篇文章——Android真的没有比每次都把它写到flash上更能保持持久状态的方法了吗?(例如,onDestroy不能保证被调用!!!?)我的服务状态变化很大,如果每次状态变化时我都必须触摸flash,这会增加电池使用量并加速flash的耗损@迈克尔:注意:不要指望这个方法被调用为保存数据的地方!例如,如果某个活动正在编辑内容提供程序中的数据,则这些编辑应该在onPause()或onSaveInstanceState(Bundle)中提交,而不是在此处提交。@KurtisNusbaum没有注意到这样的限制(尽管它显然仍然存在),服务也没有onPause或onSaveInstanceState.oops,我的错。我已经有一段时间没看这篇文章了,我以为我们在谈论活动。