2013-10-24 132 views
1

昨天我在倫敦AppsWorld上看到了Commonsware Mark關於多線程和使用醒目服務的偉大演講。他建議在某些情況下使用WakefulIntentServiceWakeFulBroadcastReceiver以確保您的應用能夠繼續一些長時間處理並防止設備進入睡眠狀態。設備何時進入睡眠狀態?

我有一個app,當設備屏幕關閉時,它會定期執行一些後臺處理。我使用AlarmManager來定期完成這些工作。 由於我有一個龐大的用戶羣(200,000活躍用戶),當用戶給我發送一些日誌文件時,我會看到各種奇怪的情況。除此之外,我可以看到,在某些設備上觸發警報後,應用程序開始執行其工作,然後突然在幾秒鐘甚至幾分鐘內(沒有在日誌文件中輸入一段時間)執行任何操作。我認爲這是因爲手機進入睡眠狀態。 讓我感到困擾的是,這隻發生在某些設備上,例如三星SGS2 +會發生很多事情,但不會發生在SGS2,SGS3或SGS4上。

所以我想知道的是:什麼是政策決定何時把手機睡覺?它是Android決定還是在Linux級別更低? 允許製造商調整多少?睡眠策略不應該成爲Android Compatibility定義的一部分嗎? 額外的問題:是否有某些級別的睡眠,像幾個級別的CPU速度,還是隻是布爾睡覺/不睡覺?

+3

這是標記,而不是麥克:) – Piovezan

回答

4

什麼是決定何時讓手機進入睡眠的政策?

一般來說,如果沒有任何東西持有WakeLock,則設備可以自由進入「機會主義暫停」模式,即CPU停止執行指令。

Android的決定還是低於Linux的水平?

Linux內核 - 最初通過Android擴展,現在已經進入股票內核 - 處理機會性掛起。 Userland應用,如SDK應用,可以使用WakeLock來阻止機會性掛起。

睡眠策略不應該成爲Android兼容性定義的一部分嗎?

許多優秀的問題都會根據專家的經驗產生一定程度的意見,但對這個問題的回答往往基於意見而不是事實,參考或具體專業知識。

是否有一些睡眠水平,像幾個級別的CPU速度,還是隻是布爾睡覺/不睡覺?

與Android SpeedStep風格的CPU頻率變化相比,從Android SDK應用程序和CPU相比,它現在是「布爾睡眠/未睡眠」。某些多核CPU可能會打開和關閉內核以節省電力,但這通常與機會暫停無關。

相關問題