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

时间:2010-02-23 23:44:36

标签: android

我正在对Android手机进行电池消费研究。我想每10分钟进行一次电池检查,直到电池完全耗尽。我一直遇到问题让它发挥作用。

在我第一次尝试时,我在服务类中使用计时器,并每10分钟安排一次电池检查。但很快我发现屏幕关闭后服务暂停了。

然后我尝试使用AlarmService,我每10分钟使用一次报警电话来唤醒我的服务并检查电池电量并将数据保存到SD卡上的文件中。它适用于屏幕关闭。但是,我只获得了9个小时的数据......似乎AlarmService在几个小时之后停止了。我不知道为什么会这样,系统是否因内存问题而将其杀死?

所以我的问题是,有没有人在之前写过一些服务(如永远)?你是如何做到的,我非常感谢你的示例代码?

我目前正在阅读一些帖子,说我可以使用部分唤醒锁来保持服务的活着......这是正确的方法吗?

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

2 个答案:

答案 0 :(得分:10)

  

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

你可能没有拿WakeLock,所以设备就睡着了。

  似乎AlarmService停在了   几个小时后的一些点

我很怀疑。

  

所以我的问题是,是否有人写过   一些服务(如永远)运行   之前的背景?

无法创建将永久运行的服务。应该可以通过AlarmManager创建一个将永久调用的计划任务。

  

我正在阅读一些帖子   说有一个部分叫醒   我可以用来保持服务   活着..这是正确的做法   它?

我不确定“它”是什么。但是,如果您想让设备保持清醒状态 - 无论是第一种方法,还是只是在AlarmManager触发工作时 - 您需要保留WakeLock

Here is a project几乎完全按照您对AlarmManager的描述,减去检查电池电量,但使用WakefulIntentService确保设备保持清醒状态。如果在电池关闭之前无法运行此代码,请加入cw-android Google Group并报告您的发现,我会看一下。

答案 1 :(得分:2)