android – 对于后台服务WakeLock或startForeground更好

不可否认,我只是在这里讨厌,所以我想要一些知识.

我有一个服务,我在后台运行连接到另一个计数器倒计时的线程.我有一段时间倒计时死亡的问题,并假设这是由于服务的垃圾收集.我似乎已经使用startForeground修复了问题(并且看不到真正的电池使用).现在我读到关于唤醒锁的问题,是否有关于何时使用其中一种的最佳做法?

谢谢!

最佳答案

I have a service I run in the background connected to another thread that counts down a timer.

请使用AlarmManager,因此您的服务只需要在实际工作时就在内存中,而不仅仅是看时钟滴答.关于Android的最大用户抱怨之一就是开发人员创建的阻碍手机的所有背景信息.

I seem to have fixed the issue (and see no real battery use) using startForeground.

startForeground()背后的一点是表明您的服务不断向用户提供价值,这样用户就会注意到服务是否因为过长或过低的内存条件而被回收.坐着看钟嘀嗒声不是“不断为用户提供价值”.请使用AlarmManager,您不需要startForeground().

Now I read about wakelocks, are there any best practices on when to use one or the other?

WakeLock保持CPU通电(可能还有其他东西,比如屏幕).它与startForeground()几乎没有关系.如果您使用AlarmManager,根据您正在进行的工作,您可能需要一个WakeLock以确保设备在您执行perodic时保持清醒状态

点赞