2010-11-28 28 views
0

我想每X分鐘執行一次REST API請求來更新我的應用程序使用的數據庫。Android - 實現類似Unix的cronjob

無論我的應用程序是否正在運行,都會發生這種情況。這也意味着,如果用戶重新啓動移動設備,輪詢應該立即開始,而不需要先運行應用程序。

基本上我想要實現這個樣的Unix的cronjob

*/5 * * * * /usr/local/bin/update_something.sh 

的是,可能通過Android服務?如果是這樣,你能給我一些基本的方向嗎?

謝謝。

回答

3

是的,您可以使用服務,但需要在某個相關時間點啓動/啓動服務。你可以嘗試使用像AlarmManager這樣的類,每隔x分鐘就可以觸發你的服務。

http://developer.android.com/reference/android/app/AlarmManager.html

編輯 -

要在設備啓動時開始爲您服務,您可以使用廣播接收器

<action android:name="android.intent.action.BOOT_COMPLETED" /> 

清潔香港這個環節出

http://www.androidcompetencycenter.com/2009/06/start-service-at-boot/

+0

請注意,以小於15分鐘的時間間隔從後臺輪詢網絡而不給用戶設置以控制時間間隔通常被認爲粗魯且不考慮用戶的電池壽命。有關這種設置的示例,請參閱Twitter應用程序 - 用戶可以選擇每5分鐘到每4小時進行一次輪詢。您還應該傾向於使用`AlarmManager`提供的不精確的時間間隔,以便系統可以將您的應用程序與其他同時工作的其他應用程序一起喚醒。 – adamp 2010-11-28 21:00:41

0

Android Service將是要走的路。

+0

事情是一個應用程序需要明確啓動服務,我估計。我擔心他們在移動設備啓動後不能直接啓動。 – dan 2010-11-28 16:58:33

1

所以,這裏是我將如何做到這一點:

  1. 有一個BroadcastReceiver偵聽到可接受的廣播Intent,如Intent.ACTION_BOOT_COMPLETED(你會爲了申報許可,您的清單,以接收意圖)
  2. 當該BroadcastReceiver收到意圖,有它調用設置報警設置Service將設置AlarmManager
  3. 在該服務中,建立AlarmManager以便它將一個Intent發送到真正的 Service every five minutes. (I don't know the details about how AlarmManager`作品)
  4. 您可以停止第一服務 - 你真正的服務將接收AlarmManager發送意圖。