我正在使用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);
}
请帮助任何人。提前谢谢。
答案 0 :(得分:2)
我希望即使设备处于休眠状态,服务也会始终运行
您的用户可能不同意这一点。当然很多用户抱怨电池寿命不佳,这就是谷歌和设备制造商采取措施阻止开发人员做这样的事情的原因。
但是当我的设备处于睡眠状态时,我的服务就停止了
在Android 8.0+上,您的服务将在一分钟后停止运行。
在Android 6.0+上,一旦设备进入打盹模式,您的方法将无法运行。一些制造商在Android 6.0之前实施了类似的限制。另外,如果downloadInfo()
花费的时间超过一分钟,设备可能会在唤醒锁之间入睡。