2014-06-19 34 views
0

我正在使用AlarmManager進行重複後臺進程。我的應用程序在5秒內重複請求數據。但經過很長時間,當我打開我的應用程序時,它崩潰了。我無法弄清楚爲什麼。如何在Android中重複運行後臺進程

我該如何反覆執行後臺進程?我應該使用AlarmManager ,定時器或其他東西嗎?

即使應用程序沒有焦點或未處於活動狀態,我的後臺進程也應始終運行。

+0

'AlarmManager'肯定沒問題。從服務器獲取新數據的另一種方式是「PUSH」通知。 – eleven

+0

如果發生崩潰,您應該從logcat發佈堆棧跟蹤。如果您想在應用程序對用戶不可見的情況下進行工作,則應該使用「服務」。 – Karakuri

+0

我只是搜索發現在互聯網AlarmManager代碼並實現它。不知道哪個是最好的。 @blackbelt –

回答

1

我的應用程序重複請求服務器的數據5秒間隔。

使用手機和平板電腦等移動設備的用戶不會欣賞您的行爲。他們不會欣賞你的電池壽命消耗和帶寬消耗。設備製造商和谷歌正在繼續採取積極措施,阻止像您這樣的應用程序以這種方式行事,無論是自動還是通過爲用戶提供工具來找到像您這樣的不良行爲應用程序並擺脫它們。

但之後當我打開我的應用程序的墜機

最有可能的一些很長一段時間,你在你的應用程序中的錯誤。你需要修復這個bug。既然你沒有提供你的崩潰細節,例如源代碼和堆棧跟蹤,沒有人能真正幫助你。

這是最好的反覆後臺進程,AlarmManager,定時器或其他什麼東西?

切換到用戶可配置的和不太瘋狂的輪詢週期(例如,在默認情況下每隔15分鐘),然後結合使用AlarmManagerIntentService,讓您的過程可以乾淨地走

或者,當感興趣的數據改變時,例如通過Google Cloud Messaging切換到使服務器向設備發送消息。這將允許您將投票時間縮短爲偶發事件(例如,默認情況下每小時一次),作爲備用機制,以防因某種原因而錯過推送消息。

我的後臺進程,始終要運行,雖然應用沒有焦點或活動

你的用戶會同意你的看法。他們不希望應用程序一直運行,捆綁系統RAM。他們確實不希望應用程序按照您提出的方式消耗電池和帶寬。用戶將擺脫你的後臺程序,或者通過:

  • 刷你的應用程序關閉近期任務列表
  • 使用第三方任務管理器
  • 力停止通過其在進入你的應用程序設置中的應用程序列表
  • 卸載您的應用程序