android屏幕关闭后,后台服务用的handler,timer之类的定时器会被暂停运行,屏幕打开后重新运行。
为了防止定时器被运行,可以在服务中使用 WakeLock。
在服务开始的地方执行:
wakeLock=((PowerManager)getSystemService(Context.POWER_SERVICE)).newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG);
if(wakeLock!=null)
{
wakeLock.acquire();//这句执行后,手机将不会休眠,直到执行wakeLock.release();方法
}
所以需要在服务停止的时候执行
if(wakeLock!=null)
{
wakeLock.release();
}