Android Service停止在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);
    }

请帮助任何人。预先感谢。

我希望服务始终运行,即使设备是睡眠

您的用户可能会不同意。当然,许多用户抱怨电池寿命差,这就是为什么Google和设备制造商采取了制定措施阻止开发人员进行此类操作的原因。

,但是当我的设备入睡时,我的服务停止了

在Android 8.0 上,您的服务将在一分钟后停止运行。在Android 6.0 上,一旦设备进入"打ze"模式,您的方法将无法工作。一些制造商在Android 6.0之前实施了类似的限制。另外,如果downloadInfo()花费超过一分钟,则该设备可能会在Wakelocks之间入睡。

最新更新