永远在后台运行一个服务..? Android的

我正在做一个Android手机的耗电研究。 我想每10分钟运行一次电池检查,直到电池完全死亡。 我一直有问题,使其工作。

在我第一次尝试的时候,我在一个服务类中使用了一个定时器,并且每10分钟安排一次电池检查。 但是很快我发现屏幕熄灭时服务暂停了。

然后,我尝试使用AlarmService,每隔10分钟使用一次警报呼叫唤醒我的服务,并检查电池电量并将数据保存到SD卡上的文件中。 它与屏幕一起工作。 不过,我只有9小时的数据…看起来AlarmService在几个小时后的某个时间点停了下来。 我不知道为什么它是这样的,有系统杀死它的内存问题?

所以我的问题是,有没有人写过一些服务在后台运行(像永远)? 你怎么做,我会非常感谢一个示例代码?

我正在阅读一些post,说有一个部分唤醒锁,我可以用来保持服务活着..这是正确的方法来做到这一点?

非常感谢,我希望我能在这里得到一些有用的答案。

Solutions Collecting From Web of "永远在后台运行一个服务..? Android的"

在我第一次尝试的时候,我在一个服务类中使用了一个定时器,并且每10分钟安排一次电池检查。 但是很快我发现屏幕熄灭时服务暂停了。

你可能没有WakeLock一个WakeLock ,所以这个设备睡着了。

看起来AlarmService在几个小时之后的某个时刻停止

我相当怀疑它。

所以我的问题是,有没有人写过一些服务在后台运行(像永远)?

创build一个永远运行的服务是不可能的。 应该可以通过AlarmManager创build一个计划任务,这个任务将被“永久”调用。

我正在阅读一些post,说有一个部分唤醒锁,我可以用来保持服务活着..这是正确的方法来做到这一点?

我不确定它是什么。 但是,如果您想让设备保持清醒状态 – 无论您是第一种方法,还是仅仅在由AlarmManager触发工作的AlarmManager – 您都需要保持一个WakeLock

这是一个几乎完全符合你为AlarmManager描述的AlarmManager ,减去检查电池电量,但使用WakefulIntentService来确保设备保持清醒状态。 如果在电池closures之前无法运行此代码,请joincw-android Google小组并报告您的发现,然后我们来看看它。