我正在使用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);
}
请帮助任何人。预先感谢。
我希望服务始终运行,即使设备是睡眠
您的用户可能会不同意。当然,许多用户抱怨电池寿命差,这就是为什么Google和设备制造商采取了制定措施阻止开发人员进行此类操作的原因。
,但是当我的设备入睡时,我的服务停止了
在Android 8.0 上,您的服务将在一分钟后停止运行。在Android 6.0 上,一旦设备进入"打ze"模式,您的方法将无法工作。一些制造商在Android 6.0之前实施了类似的限制。另外,如果downloadInfo()
花费超过一分钟,则该设备可能会在Wakelocks之间入睡。