2011-04-10 33 views
0

如果我想開發一個簡單的電池部件,其更新小部件的圖片,只要電池信息的任何變化(AC插入,電池電量變化),我應該如何跟蹤電池狀態?我確實考慮使用AlarmManager,但隨後小部件會定期更新(比如5分鐘),如何在發生任何事件後立即完成更新?一個簡單的電池的Widget

+0

請堅持您的原始策略。這個解決方案要求你有一個'Service'運行所有的時間,用'BroadcastReceiver'來監視'ACTION_BATTERY_CHANGED'。這是用戶敵對的 - 像這樣的應用程序是發明「任務殺手」的原因。 – CommonsWare 2011-04-10 16:10:28

+0

發生在我身上的事情是我的服務在一段時間後無法運作。我相信Android系統會禁用並釋放它所擁有的資源。我試圖startForeground,以避免這一點,但通知味精將顯示這是如此討厭。 – 2011-04-11 02:33:04

+0

Kazyua金:「發生什麼事對我來說是我的服務將不會在一定的時間段後運行」 - 這就是爲什麼我建議你不要創建一個永恆的服務,您使用'AlarmManager'。 – CommonsWare 2011-04-11 11:57:32

回答

0

聽起來像是你需要一個廣播接收器。

已經回答了這裏:Android Battery in SDK

報價賈勒特:

你可以註冊一個Intent接收器來接收ACTION_BATTERY_CHANGED廣播:http://developer.android.com/reference/android/content/Intent.html#ACTION_BATTERY_CHANGED。該文件說,廣播是粘性的,所以即使在電池狀態發生變化之後,您仍然可以抓取它。

+0

但是我怎麼能擺脫一段時間後被殺的服務? – 2011-04-11 02:33:57

+0

如果你開始服務STICKY它只會在系統資源不足時停止。即使如此,您可以爲它在onLowMemory重新啓動報警() – Blundell 2011-04-11 07:38:46

+0

SDK中說,onLowMemory是用於釋放由服務,而不是如何重新啓動該服務所佔用的內存。有沒有其他方法可以確保我的服務始終正常運行?我可以看到一些電池插件的市場上,他們都有一個服務運行監測設備的情況下,所有的時間 – 2011-04-14 03:36:25