我创建了一个托管 ContentObserver (C) 的服务 (S)。C 跟踪一些数据并记录对数据库所做的更改 (D)。
S 也有一个计时器,它按时间间隔将 D 的内容转储到文件中。
我的服务在我的手机上运行,一段时间内一切似乎都很好(几个小时左右)。然后突然停止记录对数据所做的更改并停止转储到文件。我尝试更改数据(在 C 上引发 onChange)并在手机中浏览以保持设备处于唤醒状态,但什么也没发生 - 服务仍然处于非活动状态。S 仍在运行,当我连接到笔记本电脑时,我在日志中看不到任何错误。
我的猜测是服务正在休眠(没有 CPU 切片)。我读过一些关于唤醒锁的文章,但我不想强迫手机一直处于唤醒状态。()。另一种方法是创建一个重复警报,每 T 分钟执行一次 C 的工作(轮询)。我更喜欢 ContentObservers 的想法,因为用户可以在更新之间更改(尤其是删除)数据。使用 ContentObserver,我将获得所有更改,而不仅仅是定时间隔的快照。
关于如何定期唤醒我的服务的任何想法?
最好的问候弗雷德里克