2011-09-19 171 views
1

我正在製作一個每30秒發佈到互聯網上的應用程序。一切正常,直到屏幕熄滅。計時器似乎減慢了。需要5分鐘才能發佈。我試圖獲得喚醒鎖和setforegroundactivity,但沒有任何工作。這裏的任何想法?當屏幕關閉時,Android「變慢」

其作爲服務運行,我用這個喚醒鎖:

PowerManager mgr = (PowerManager)this.getSystemService(Context.POWER_SERVICE); 
WakeLock wakeLock = mgr.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakeLock"); 
wakeLock.acquire(); 

而且這裏的例子來設置前景色:http://developer.android.com/reference/android/app/Service.html

我也試着來檢查它可以使用調試器,但當USB連接時一切正常。

更多細節: 檢查與定期我用這個:

Private void startCheck() { 
mCheckHandler.sleep(30000); 
} 

    private CheckHandler mCheckHandler = new CheckHandler(); 
    private class CheckHandler extends Handler { 
      @Override 
      public void handleMessage(Message msg) { 
       Pservice.this.startCheck(); 
      } 

      public void sleep(long delayMillis) { 
       this.removeMessages(0); 
       sendMessageDelayed(obtainMessage(0), delayMillis); 
      } 
      }; 

我將它每次檢查互聯網時間獲取喚醒鎖。現在它工作正常:)感謝您的幫助:)

+1

手機沒有心情讓它的電池耗盡?/usefulcomment *(嚴重的是,這太模糊了,要更具體地說明你如何做事,用小代碼示例說明 - 否則我們只能猜測)* – 2011-09-19 13:41:50

+0

鏈接和您提供的代碼與您的問題無關。請提供更多細節。 – Ronnie

回答

2

當屏幕熄滅時,設備將最終進入低功耗狀態。這種低功耗狀態基本上意味着你的代碼不會被執行。這需要5分鐘的原因是因爲其他應用程序正在喚醒設備,然後您的應用程序有機會再次運行。

通過USB連接設備,可以防止發生低功耗狀態。

這聽起來像你的喚醒鎖實際上並沒有被收購或它太快被釋放。

+0

我每次檢查互聯網時都會設置它以獲取喚醒鎖。現在它工作正常:)感謝您的幫助:) – user952725

0

你測試過任何其他設備,ROM,仿真器嗎?有時候設備製造商的代碼可能會導致類似問題的一個簡單問題。

您使用的是什麼設備和光盤?

0

我一個人積極降低我的android設備,當屏幕關閉。

另外,你提到:

我也試着檢查什麼可以使用調試器,但USB連接時,一切工作正常。

嘗試使用ADB Wireless進行調試而不使用USB電源或只是使用日誌記錄來代替。