簡體   English   中英

在 Android 上定期安排后台任務

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM