2017-09-16 96 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()花費的時間超過一分鐘,該設備可能會在兩次喚醒之間睡着。