2013-07-12 72 views
0

如果你一直在閱讀我的問題,你會知道我一直有這個應用程序的時間。這個應用程序包括一個推送服務(我從頭開始編寫)和一個雲(我從頭開始編寫).Android報告這個應用程序正在使用55%的電池。我懷疑這是因爲推送服務器不會讓收音機進入睡眠狀態,因爲它始終處於連接狀態。通過使用收音機消耗電池壽命

所以我的問題是如何使無線電睡眠,並從服務器得到東西時醒來?它使用java.nio - 是一個潛在的問題嗎?我需要它的異步非阻塞功能。我也不想使用Google的雲消息服務。

具體內容: - 我在任何時候都使用一個始終連接的套接字。 - 客戶端不發送心跳(沒有,我寫了,反正,NIO可以自己做) - 服務器時,它僅需要發送的東西(它使用NIO以及)

謝謝你你可以提供任何幫助!

編輯:我使用的收音機取決於可用的互聯網連接。例如。如果用戶有WiFi並且Android連接到網絡,它將使用WiFi。

+0

任何希望推出自己的推送框架的人都會更好地投資於Qualcomm MDP測試設備,以便使用Trepn並更精確地確定功耗是從哪裏來的,而不是隨機猜測。您還應該考慮更新您的問題,具體說明您嘗試使用的無線電(WiFi?GSM/CDMA?還有其他?)。另外,請觀看關於C2DM的2010年Google I | O會議視頻,他們將討論他們用於C2DM(後來變成GCM)的心跳,因爲如果您可以推出可靠的推送框架,我會感到驚訝。 – CommonsWare

+0

http://stackoverflow.com/a/6432021/1461223我在這裏做錯了什麼?我意識到還有更多,但爲什麼不/不會像C2M那樣消耗電池壽命。我不會把它稱爲隨機猜測,我認爲這是基於一週測試和調試的可能估計。那是耗盡電池的一個組件,而不是其他組件。 –

+0

「我不會把它稱爲一個隨機猜測」 - 基於你的「55%」的數字,可能你正在使用設置中的電池屏幕作爲你的測量棒。谷歌承認,他們沒有實際測量電池消耗的體面方式,所以他們爲該屏幕記錄的是猜測。購買MDP並使用Trepn。 – CommonsWare

回答

0

我想通了!我通過套接字標記發現電池消耗的位置,並評論可能的耗盡行爲。我做了一些重要的客戶端優化,並且巨大的流失消失了。這主要是由於不應該從插座不斷讀取時CPU耗盡。