安卓设备睡眠时Android服务停止工作
问题描述:
我正在使用android服务。即使设备处于睡眠状态,我也希望服务始终运行。但是当我的设备处于睡眠状态时,我的服务停止。这是我的代码安卓设备睡眠时Android服务停止工作
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
isRunning = true;
mythread = new Thread() {
@Override
public void run() {
while (isRunning) {
turnOnScreen(60000*3);
//Download some information by android Volley request
downloadInfo();
try {
Thread.sleep(60000*2);
} catch (InterruptedException e) {
isRunning = false;
e.printStackTrace();
}
}
}
};
if (isRunning) {
if (!mythread.isAlive()) {
mythread.start();
}
}
return START_REDELIVER_INTENT;
}
而且turnOnScreen方法是
private void turnOnScreen(long milliSeconds){
PowerManager mgr = (PowerManager)this.getSystemService(this.POWER_SERVICE);
PowerManager.WakeLock wakeLock = mgr.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakeLock");
wakeLock.acquire(milliSeconds);
}
请帮助任何人。提前致谢。
答
我希望服务始终运行,即使设备处于睡眠
您的用户可能并不同意这种看法。当然,很多用户抱怨电池寿命不足,这也是谷歌和设备制造商采取措施阻止开发人员这样做的原因。
但我的服务是停止的时候我的设备是睡眠
在Android 8.0+,您的服务将停止在一分钟后运行。 在Android 6.0+上,一旦设备进入打盹模式,您的方法将无法使用。一些制造商在Android 6.0之前实施了类似的限制。另外,如果downloadInfo()
花费的时间超过一分钟,该设备可能会在两次唤醒之间睡着。