[英]Scheduling a background task periodically on Android
我正在開發一個應用程序,我必須每 15 分鍾從多個傳感器讀取數據並將其發送到遠程服務器。 這也必須在應用程序關閉/終止時完成,我還必須確保它始終執行。 我還想確保它(幾乎)恰好每 15 分鍾發生一次(+-1 分鍾的差異是上限)。
此時,我找到了 3 個選項:使用 Workmanager、Alarmmanager 或使用前台服務。 按照文檔,Workmanager 似乎是 go 用於后台任務的方式,但是,在閱讀了一些內容之后,Alarmmanager 似乎是一個更安全的選擇(Workmanager 有時會遇到打瞌睡模式的問題,並且時間不准確,因為它使用 flex至少5 分鍾)。 並且這種任務實際上不允許使用前台服務(它並不是真正長時間運行,它只是一個周期性任務)並且在較新的 Android 版本中受到限制。 您認為使用 Alarmmanger 來完成這項任務是個好主意,還是我應該使用其他東西? 謝謝!
TODO后台調度.. 你可以使用這個方法來做你的事情..
KOTLIN;
val service = Executors.newSingleThreadScheduledExecutor()
val handler = Handler(Looper.getMainLooper())
service.scheduleAtFixedRate({
handler.run {
// Do your stuff here, It gets loop every 15 Minutes
}
}, 0, 15, TimeUnit.MINUTES);
JAVA;
ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
Handler handler = new Handler(Looper.getMainLooper());
service.scheduleAtFixedRate(() -> {
handler.post(() -> {
// Do your stuff here, It gets loop every 15 Minutes
});
}, 0, 15, TimeUnit.MINUTES);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.