6

我们创建了一个应用程序,它本质上是一个计时器/秒表,具有一些装饰功能。我们定义了一个服务,它可以计时并提醒订阅某些计时器事件的侦听器(活动等)。

我们希望能够在android终止我们的服务(用于内存回收)时保存计时器/秒表的状态(经过的秒数、距离下一个事件的时间、用户提供的配置等),然后恢复服务的状态当用户恢复应用程序时。 对我们来说,这意味着可能保留和恢复对象及其状态。 我们的服务中有很多组合。基本上,我们的服务由我们所有的计时器模型组成,当服务死亡时,其中的计时器模型也随之死亡。

有什么策略可以保持服务的状态?PreferencesManager 对于我们的目的可能不够健壮,尽管它可能是。我们可以依靠 Service onDestroy() 方法来保存状态(比如在 SQLite 中)吗?如果 android 决定杀死我们的进程,它甚至可以保证服务 onDestroy() 将被调用?

谢谢!

4

1 回答 1

12

我们定义了一个服务,它可以计时并提醒订阅某些计时器事件的侦听器(活动等)

您不需要一直运行服务,看着时钟滴答作响。这种方法对用户不利,因为它无缘无故占用了系统 RAM。用于AlarmManager控制“某些计时器事件”,并在其余时间使您的服务内存不足。

我们希望能够保存计时器/秒表的状态(经过的秒数、距离下一个事件的时间、用户提供的配置等)

不要坚持“经过的秒数”。坚持计时器/秒表开始的时间。然后,经过的秒数是减法的问题。

不要坚持“直到下一个事件的时间”。坚持下一个事件的时间

这些值不会连续变化,因此可以在计时器启动或计时器生命周期中的其他主要生命周期事件时保持不变。

有什么策略可以保持服务的状态?

使用数据库、SharedPreferences或您自己选择的文件格式。

我们可以依靠 Service onDestroy() 方法来保存状态(比如在 SQLite 中)吗?

不。

如果 android 决定杀死我们的进程,它甚至可以保证服务 onDestroy() 将被调用?

不保证会被调用。

于 2013-10-16T19:26:38.313 回答