2012-05-23 108 views
2

在我的應用程序中,我有一個服務創建在一個不同的線程比主要的(UI)。 然後,在服務中,我創建了3個其他線程,無限期地在後臺執行。 但是一旦手機進入待機模式,這些線程將暫停執行!如何在待機模式下不讓線程自行停止?

如果我通過USB電纜將手機連接到電腦,相反,我看到線程正常工作,即使在待機模式下也不會暫停自己。

但如何不讓線程在正常執行中有這種行爲?

TNX

解決:

我設法使用PowerManager的對象,獲得PARTIAL_WAKE_LOCK是離開CPU主動從獲取()來釋放()簡單地得到這個。

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "My Tag"); 
wl.acquire(); 
    ..CPU will stay on during this section.. 
wl.release(); 
+1

不待機模式涉及到讓CPU進入睡眠狀態嗎?如果是這樣,很難看出你在待機模式下如何執行任何線程,因爲允許線程執行意味着再次喚醒CPU,此時你將不再處於待機模式。 –

+0

嗨,你的話讓我明白如何解決問題! :D(用解決方案編輯問題) –

回答

2

我設法使用PowerManager的對象,獲得PARTIAL_WAKE_LOCK是離開CPU主動從獲取()調用,直到釋放()調用簡單地得到這一點。

這樣即使手機進入stanbdy模式,線程肯定會在運行。

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "My Tag"); 
wl.acquire(); 
    ..CPU will stay on during this section.. 
wl.release();