2015-09-08 90 views
-1

我試圖實現一個後臺服務,該服務每隔15分鐘向一個API發出一個HTTP請求,從某個活動開始時開始。即使我的應用程序沒有運行,或者我正在處理該應用程序的其他活動,我也需要每15分鐘啓動一次服務。我已經搜索了一個例子,看看如何進行一些Stackoverflow的問題和答案,例如:Start Android Service after every 5 minutes。它鏈接到這個頁面:http://code4reference.com/2012/07/tutorial-on-android-alarmmanager/每15分鐘發出一個HTTP請求的後臺服務

從討論中我知道我需要使用一個報警管理器,但是所有的實現都沒有在它們具有廣播接收器的同一活動中完成。我希望在同一活動中實現的原因是因爲請求的結果是我想要在UI上顯示的結果。

是否有這種情況

回答

1

但是所有的實現沒有這個正在他們廣播接收機

相同的活動,是完成實施警報管理器的方式因爲這是你唯一可行的選擇,甚至在Android 6.0+上也不行。在這種情況下使用AlarmManager的配方是讓它啓動一個WakefulBroadcastReceiver,然後它將與IntentService一起工作來完成工作,並在工作完成時離開。

在Android 6.0+上,如果設備沒有充電並且沒有移動,您的AlarmManager事件將不會每15分鐘觸發一次,在「打盹模式」下提供。此外,如果用戶在您的應用程序的用戶界面中未使用一段時間且設備未在充電,則Android 6.0+上的「應用程序待機」禮貌,您的AlarmManager事件不會每15分鐘觸發一次。

我希望在同一活動中實現的原因是因爲請求的結果是我想要在UI上顯示的。

這違背了,你做了早些時候的發言:

我需要的服務,每15分鐘就開始即使我的應用程序沒有運行

如果您的應用沒有運行,那麼你沒有一個活動。

歡迎您讓IntentService在活動巴士上發佈信息,例如greenrobot's EventBus,讓您的活動知道工作結果......如果活動恰好在周圍(否則,信息會被忽略)。

相關問題