2012-01-27 124 views
4

我正在開發一個android應用程序,我想減少功耗。我相信的方法是在用戶活動停止某個閾值時間時將手機置於睡眠模式。我有三個關於這個問題。當手機進入睡眠狀態時,Handler.sendMessageDelayed()是否工作?

  1. 如果我放開激活鎖定,並沒有其他應用程序後多少時間會在手機睡覺抱着激活鎖定?

  2. 我有多個HandlerThreads運行在我使用sendMessageDelayed()函數的地方。即使手機進入睡眠模式後,這些信息是否會傳送出去?

  3. 是否將手機置於飛行模式可以節省更多的電量,而不僅僅是讓手機進入睡眠狀態。如果是的話,那麼爲什麼這是因爲這兩種模式唯一的區別就是蜂窩網絡的使用。

回答

3

如果我放開激活鎖定,並沒有其他應用程序持有多少時間後 激活鎖定將手機去睡覺?

確實沒有明確的答案,但從個人經驗來看,我認爲它可能會在30秒到1分鐘內發生。

我有多個HandlerThreads運行在我使用 sendMessageDelayed()函數。在手機進入睡眠模式後,這些消息是否會傳送到即使是 ?

我真的不會指望它,因爲我從來沒有看到任何說它會喚醒設備發送消息。你可以隨時測試它,但我不會相信它的工作原理,因爲文檔沒有聲明它會。

是否將手機設置爲飛行模式更省電,而不是 只是把手機睡覺。如果是的話,那麼爲什麼這兩種模式的區別僅在於使用蜂窩網絡。

如果您將其置於睡眠模式和飛行模式,那麼與JUST睡眠模式相比,您將節省更多電量。

原因是,即使CPU處於睡眠狀態,手機也必須與手機網絡保持連接,以便知道您是否收到短信或打電話。要做到這一點,它必須使用電池持續保持天線開啓。如果您將其設置爲飛行模式,則會基本上關閉天線,然後手機將不會使用電池進行該功能。

+0

謝謝Jakar。你能否給我提供你回答問題2和問題3的參考資料? – crazyaboutliv 2012-01-27 13:06:58

+0

對於問題3,我沒有使用參考。我只是在邏輯上看待它 - 如果手機必須保持其他電源,那麼它必須使用更多的電池。對於問題2,沒有關於睡眠模式的真實文檔,但是我閱讀了[本頁](http://developer.android.com/reference/android/os/Handler.html),它沒有提到喚醒設備。可靠地喚醒設備的唯一方法是爲具有RTC_WAKEUP的「BroadcastReceiver」設置一個「Alarm」。 – Jakar 2012-01-27 20:32:38

+0

好的答案,它解釋了爲什麼sendMessageDelayed()在屏蔽時不起作用。 – 2013-02-06 08:42:16

相關問題