我需要構建一個每10/15分鐘運行一次的後臺任務(無關緊要,或者很好),即使應用程序是沒有運行。Android - 每15分鐘運行一次後臺任務,即使應用程序沒有運行
我該如何做到這一點?我似乎無法繞過這個包裹。
我讀過我可以使用某種runnable()功能或使用後臺服務或AlarmManager。我正在考慮後臺服務,因爲它也必須在應用程序本身沒有運行時完成。
什麼是更好的方式做到這一點,我怎麼能做到這一點?
我需要構建一個每10/15分鐘運行一次的後臺任務(無關緊要,或者很好),即使應用程序是沒有運行。Android - 每15分鐘運行一次後臺任務,即使應用程序沒有運行
我該如何做到這一點?我似乎無法繞過這個包裹。
我讀過我可以使用某種runnable()功能或使用後臺服務或AlarmManager。我正在考慮後臺服務,因爲它也必須在應用程序本身沒有運行時完成。
什麼是更好的方式做到這一點,我怎麼能做到這一點?
你已經確定了執行代碼片段的時間量(時間間隔),它更好地使用AlarmManager,因爲它更節能。如果你的應用需要聽某種事件,那麼服務就是你需要的。
public static void registerAlarm(Context context) {
Intent i = new Intent(context, YOURBROADCASTRECIEVER.class);
PendingIntent sender = PendingIntent.getBroadcast(context,REQUEST_CODE, i, 0);
// We want the alarm to go off 3 seconds from now.
long firstTime = SystemClock.elapsedRealtime();
firstTime += 3 * 1000;//start 3 seconds after first register.
// Schedule the alarm!
AlarmManager am = (AlarmManager) context
.getSystemService(ALARM_SERVICE);
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime,
600000, sender);//10min interval
}
報警管理器(系統服務)與遠程服務與內部警報實現(單獨的過程)?
報警管理是你的選擇,因爲它已經擁有你需要什麼,你只需要設置鬧鐘間隔
您也可以通過SyncAdapter 這裏做到這一點是你看,並從中得到啓發
樣本
但是,即使應用程序本身沒有運行,這是否允許我執行代碼? – DijkeMark 2013-04-22 19:30:24
是的。報警管理器就像,你(應用程序)告訴操作系統你想在X毫秒後做一些事情。然後系統在BroadcastReciever.onRecieve()中執行該代碼,該代碼是您希望在x毫秒後在後臺執行的代碼。 – wtsang02 2013-04-22 19:32:22
它的工作,真的很不錯,但是,停止服務呢? am.cancel()?或..謝謝@ wtsang02 – 2015-05-19 16:05:30