我们已经创建了一个应用程序,本质上是一个计时器/秒表与一些装饰功能。我们定义了一个服务,用于计时并通知侦听器(活动等)。他们订阅了某些计时器事件。
我们希望能够保存计时器/秒表的状态(经过的秒、下一个事件的时间、用户提供的配置等等)。每当android杀死我们的服务(为了内存回忆),然后在用户恢复应用程序时恢复服务的状态。对我们来说,这意味着可能保存和恢复对象及其状态。我们在服务中有很多组合。基本上,我们的服务是由所有计时器模型组成的,其中的计时器模型在服务死后死亡。
有什么策略来保持服务的状态?对于我们的目的来说,PreferencesManager可能不够健壮,尽管它可能是健壮的。我们是否可以依赖服务onDestroy()方法来保存状态(例如在SQLite中)?如果android决定终止我们的进程,它甚至保证服务onDestroy()将被调用吗?
谢谢!
发布于 2013-10-16 11:26:38
我们定义了一个服务,用于计时并通知侦听器(活动等)。订阅了某些计时器事件。
您不需要让服务一直运行,观看时钟滴答声。这种方法是针对用户的,因为它没有很好的理由将系统RAM绑定起来.使用AlarmManager
在“特定计时器事件”中获得控制,并在剩余的时间内将您的服务保持在内存之外。
我们希望能够保存计时器/秒表的状态(经过的秒、下一个事件的时间、用户提供的配置等等)。
不要持久化“经过的秒”。坚持计时器/秒表开始的时间。经过的秒是一个减法的问题。
不要坚持“时间直到下一个事件”。保持下一个事件的时间。
这些值不会不断变化,因此可以在计时器启动或计时器生命周期中的其他主要生命周期事件时持久化。
有什么策略来保持服务的状态?
使用您自己选择的数据库、SharedPreferences
或文件格式。
我们是否可以依赖服务onDestroy()方法来保存状态(例如在SQLite中)?
不是的。
如果android决定终止我们的进程,它甚至保证服务onDestroy()将被调用吗?
它不一定会被称为。
https://stackoverflow.com/questions/19411744
复制相似问题