2011-05-30 47 views
0

我正在寫一個android應用程序,它使用location.LocationManager和LocationListener來接收GPS位置更新。應用程序更新MapActivity上的位置,並將協調者發送到寧靜的Web服務。即使MapActivity對用戶不可見,Web服務也需要接收位置更新。android.app.Application vs android.app.Service

此刻,我正在做app.Application中的所有內容(除了UI),因爲即使MapActivity不可見,它仍然保持活動狀態。然而,我讀過的所有文檔都表明,app.Application用於存儲狀態,而不是執行更多的需求任務。我嘗試過使用app.Service,但它似乎過於複雜(生命週期,綁定,解除綁定),並有許多內存泄漏問題。我一直無法找到任何明確禁止從app執行這些任務的文章或文檔。應用程序,所以我想知道這種方法是否有什麼問題?

編輯:感謝您的答覆,看起來像我將不得不花費一點更多的時間搞清楚app.Service

+0

您的應用程序是很辛苦的電池,如果它不斷的用戶是否希望與否,GPS模型。這種行爲是用戶的敵對行爲,並可能會導致在Android Market上評分較低。在用戶主動使用「MapActivity」時保持GPS是一回事;全天候保持GPS非常不友好。 – CommonsWare 2011-05-30 15:16:46

+0

這是一個大學項目,我這樣做不會上市。該應用程序用於跟蹤現場人員,以確定他們的位置是否正在使用地圖。我將修改應用程序以使用GPS和網絡位置的組合,並且該位置將每5分鐘左右檢查一次,所以希望不要太耗電。 – Waldstein 2011-05-30 15:34:43

+0

這將有助於確定。 – CommonsWare 2011-05-30 17:29:00

回答

0

一般來說,我認爲使用應用程序就可以了:我已經廣泛使用了它。我想說的主要複雜因素是唯一的生命週期回調是onCreate:使用Service您至少可以選擇使用onDestroy回調完全關閉它。

我承認,Service的生命週期可能有點混亂。如果Application對象爲你工作,我不會失眠。

2

你應該可以去服務。我認爲應用程序的生命週期綁定到當前正在運行的任何組件。我猜想當進程監視器沒有運行任何應用程序或服務或任何其他地方時,如果資源需要在其他地方需要,進程監視器可隨意銷燬您的應用程序。您可能會發現您的代碼有時可以正常工作,但您會收到意想不到的崩潰。

它通常最好使用Android的規定了不同的組件

+0

@Waldstein:同意。如果沒有活動組件(例如,所有活動都在後臺),Android可以隨時終止您的進程。 – CommonsWare 2011-05-30 15:14:02

相關問題