2017-09-16 170 views
0

我正在使用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); 
    } 

请帮助任何人。提前致谢。

回答

1

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

您的用户可能并不同意这种看法。当然,很多用户抱怨电池寿命不足,这也是谷歌和设备制造商采取措施阻止开发人员这样做的原因。

但我的服务是停止的时候我的设备是睡眠

在Android 8.0+,您的服务将停止在一分钟后运行。 在Android 6.0+上,一旦设备进入打盹模式,您的方法将无法使用。一些制造商在Android 6.0之前实施了类似的限制。另外,如果downloadInfo()花费的时间超过一分钟,该设备可能会在两次唤醒之间睡着。