我有一個應用程序需要通過wifi連續監聽傳入請求。在後臺運行的服務完成這項工作。但是,屏幕關閉後,此服務會在一段時間後入睡。讓服務保持清醒而不消耗電池
從我搜索的解決方案是使用AlarmManager保持清醒。但據說這會耗盡設備的電池。 那麼,是否有另一種方法來做到這一點?
例如,像Whatsapp和Skype這樣的應用有什麼用途?他們似乎沒有殺死太多的電池,但他們不斷地運行服務?
另外,如果AlarmManager是唯一的方法,如果有人可以分享一個教程或例子,它會真的很友善。
我有一個應用程序需要通過wifi連續監聽傳入請求。在後臺運行的服務完成這項工作。但是,屏幕關閉後,此服務會在一段時間後入睡。讓服務保持清醒而不消耗電池
從我搜索的解決方案是使用AlarmManager保持清醒。但據說這會耗盡設備的電池。 那麼,是否有另一種方法來做到這一點?
例如,像Whatsapp和Skype這樣的應用有什麼用途?他們似乎沒有殺死太多的電池,但他們不斷地運行服務?
另外,如果AlarmManager是唯一的方法,如果有人可以分享一個教程或例子,它會真的很友善。
從我所搜索的解決方案是使用AlarmManager保持它醒
這不會幫助。一旦設備入睡,您的套接字連接將終止。您需要使用部分WakeLock
加上WifiLock
以保持設備持續通電。
但據說這會排出設備的電池。
WakeLock
和WifiLock
肯定會耗盡電池。
因此,有另一種方式做到這一點?
若您需要使用無線網絡連接。
例如,像Whatsapp和Skype這樣的應用有什麼用途?
當設備想要進入睡眠狀態時,他們不使用WiFi。一旦WiFi無線電關機,他們使用移動數據,因此不需要WifiLock
。對於移動數據,傳入數據包將喚醒設備,所以在實際工作中您只需要一個WakeLock
,而不是不斷。
但最好的答案是切換到使用C2DM。
「一旦WiFi無線電關閉,他們使用移動數據」 - 但爲什麼即使手機處於睡眠狀態並且移動數據已關閉(WiFi已打開),我仍然可以收到WhatsApp消息?謝謝 – BornToCode 2013-10-06 03:20:05
@BornToCode Gud問.. – NitZRobotKoder 2014-03-28 19:27:16
@CommonsWare你在這裏添加什麼? – NitZRobotKoder 2014-03-28 19:27:52
其實它不是你的服務,它落入睡眠,其設備上的WiFi單元。諸如HTC(或者所有Android設備)的製造商已經在其設備上實現了這種行爲,其中WiFi設備在一段時間的關閉之後進入待機狀態。這有助於設備在未使用時節省電池電量。
插入手機? – cHao 2012-04-19 17:46:39