2011-03-08 69 views
1

我正在使用當您的設備轉入睡眠狀態時,Android是否停止了您的線程

HandlerThread bThread = (new HandlerThread("backendHandler_thread", 
     Process.THREAD_PRIORITY_BACKGROUND); 
bThread.start(); 
backendHandler = new Handler(bThread.getLooper()); 

然後

backendHandler.postDelay(xxx, xxxx); 

並發現當設備轉入睡眠狀態時此任務不會運行並且在喚醒之後將恢復運行

我是用原裝2.1 Rom

測試三星i9000

回答

3

ŧ他是正常的行爲。

如果你需要的設備,以保持清醒,你必須通過PowerManager.newWakeLock()使用WakeLock

小心,這會消耗設備的電池。最好使用各種Android API,以便在發生某些更改時系統會調用您的代碼:如用於位置更改的LocationManager或定期喚醒的Alarm Manager。

你想在後臺做什麼樣的任務?

+0

thx,所以你的意思是不管我設置什麼優先級線程,它只是在設備轉到睡眠時暫停?我寫一個應用程序,需要做一個HTTP POST到服務器每55秒。你回答的基礎,我不得不用AlarmManager做到這一點? –

+0

當然,您可以使用WakeLock的後臺線程,但設備的處理器將運行並吃電池。 AlarmManager聽起來像的最佳解決方案中,間隔是有點短。你必須進行一些調查。另外,如果您需要檢查服務器上的數據,爲什麼不使用服務器推送:http://code.google.com/android/c2dm/index.html –

相關問題