【发布时间】:2011-11-17 19:27:42
【问题描述】:
使用 Android 2.1+。我有一项服务不时被操作系统杀死(我猜是由于内存压力)。
此服务使用类的静态成员字段维护一些状态。尽管服务被操作系统杀死并重新启动,但我希望静态字段保持其值。
但好像不是这样发生的。重新启动后,静态变量将重置为默认值。 这是应该发生的事情吗?尽管杀死/重新启动,我是否应该使用另一种方式来保持持久状态?
【问题讨论】:
使用 Android 2.1+。我有一项服务不时被操作系统杀死(我猜是由于内存压力)。
此服务使用类的静态成员字段维护一些状态。尽管服务被操作系统杀死并重新启动,但我希望静态字段保持其值。
但好像不是这样发生的。重新启动后,静态变量将重置为默认值。 这是应该发生的事情吗?尽管杀死/重新启动,我是否应该使用另一种方式来保持持久状态?
【问题讨论】:
是的,这就是您的服务被终止时发生的情况。程序从内存中取出,当它重新加载到内存中时,静态变量的默认值都是假定的。换句话说,你的程序的字节码不能从执行到执行。
通常认为使用静态变量来保持状态是不好的。尝试将它们存储在持久存储中,例如 sqlite 数据库。
【讨论】: