不可否认,我只是在这里讨厌,所以我想要一些知识。
我有一个服务,我在后台运行连接到另一个计数器倒计时的线程。我有一段时间倒计时死亡的问题,并假设这是由于服务的垃圾收集。我似乎已经使用startForeground修复了问题(并且看不到真正的电池使用)。现在我读到关于唤醒锁的问题,是否有关于何时使用其中一种的最佳实践?
谢谢!
答案 0 :(得分:2)
我有一个服务,我在后台运行连接到另一个计数器倒计时的线程。
请使用AlarmManager
,因此您的服务只需要在实际工作时才能在内存中,而不仅仅是看时钟滴答。关于Android的最大用户抱怨之一就是开发人员创建的所有这些背景内容阻塞了他们的手机。
我似乎已经使用startForeground解决了问题(并且没有看到真正的电池使用情况)。
startForeground()
背后的一点是表明您的服务不断向用户提供价值,这样用户就会注意到服务是否因为过长或过低的内存条件而被回收。坐着和看着时钟滴答是不"不断为用户提供价值"。请使用AlarmManager
,您不需要startForeground()
。
现在我读到关于唤醒锁的问题,是否有关于何时使用其中一种的最佳做法?
WakeLock
保持CPU通电(可能还有其他东西,比如屏幕)。它与startForeground()
几乎没有关系。如果您使用AlarmManager
,根据您正在进行的工作,您可能需要WakeLock
以确保设备在您执行perodic时保持清醒