2012-04-19 98 views
2

我有一個應用程序需要通過wifi連續監聽傳入請求。在後臺運行的服務完成這項工作。但是,屏幕關閉後,此服務會在一段時間後入睡。讓服務保持清醒而不消耗電池

從我搜索的解決方案是使用AlarmManager保持清醒。但據說這會耗盡設備的電池。 那麼,是否有另一種方法來做到這一點?

例如,像Whatsapp和Skype這樣的應用有什麼用途?他們似乎沒有殺死太多的電池,但他們不斷地運行服務?

另外,如果AlarmManager是唯一的方法,如果有人可以分享一個教程或例子,它會真的很友善。

+0

插入手機? – cHao 2012-04-19 17:46:39

回答

2

從我所搜索的解決方案是使用AlarmManager保持它醒

這不會幫助。一旦設備入睡,您的套接字連接將終止。您需要使用部分WakeLock加上WifiLock以保持設備持續通電。

但據說這會排出設備的電池。

WakeLockWifiLock肯定會耗盡電池。

因此,有另一種方式做到這一點?

若您需要使用無線網絡連接。

例如,像Whatsapp和Skype這樣的應用有什麼用途?

當設備想要進入睡眠狀態時,他們不使用WiFi。一旦WiFi無線電關機,他們使用移動數據,因此不需要WifiLock。對於移動數據,傳入數據包將喚醒設備,所以在實際工作中您只需要一個WakeLock,而不是不斷。

但最好的答案是切換到使用C2DM。

+3

「一旦WiFi無線電關閉,他們使用移動數據」 - 但爲什麼即使手機處於睡眠狀態並且移動數據已關閉(WiFi已打開),我仍然可以收到WhatsApp消息?謝謝 – BornToCode 2013-10-06 03:20:05

+1

@BornToCode Gud問.. – NitZRobotKoder 2014-03-28 19:27:16

+0

@CommonsWare你在這裏添加什麼? – NitZRobotKoder 2014-03-28 19:27:52

2

其實它不是你的服務,它落入睡眠,其設備上的WiFi單元。諸如HTC(或者所有Android設備)的製造商已經在其設備上實現了這種行爲,其中WiFi設備在一段時間的關閉之後進入待機狀態。這有助於設備在未使用時節省電池電量。