2013-04-05 79 views
0

我正在開發一個我想監視文件的Android應用程序。所以我在做什麼我已經創建了一個服務,我正在註冊一個文件觀察器,它將監視文件更改。由觀察員和服務的Android的電池消耗

一旦某些事件發生,將採取在SD卡中的所有文件的元數據,並通過與更換新的舊數據更新應用程序數據庫。

所以我只是想知道我必須要註冊觀察者的服務或一個活動,以節省用戶的電池,什麼會是更好的選擇。

回答

1

如果您只想在用戶使用應用程序時進行監視,請將觀察者代碼放入活動中。如果要始終進行監視,請使用服務。顯然,應用程序的要求決定了這裏的選擇。

有源服務可能消耗更多的電池,因爲它可以檢測更多的文件的改變和可以被頻繁觸發。

如果觀察者可以通知哪些改變,你只能更新變化確切文件。

另一種優化方法是收集了相當數量的更新後,在批處理來運行,而不是使用數據庫中的每個更新的數據庫更新。

1

電池壽命是不應該的問題(你仍然可以使用的CPU獨立於類的你擴展)

這聽起來像一個服務,而不是一個活動,所以我會選擇一個服務。

爲了節約電池,您可以根據自己的目標來做一些事情。

  1. 的FileObserver應該給你正在訪問/修改了文件的直接路徑,所以也許你並不需要重新掃描SD卡上的所有文件?

  2. 讓服務只存儲到文件的路徑改變了,什麼事都不做更多的服務。然後,當他們啓動我們的應用程序界面時,啓動一個異步任務並在後臺處理它們。這應該是相當快的,取決於應用程序啓動時間之間已更改的文件數量。