【问题标题】:optimal way of doing background opertion in android? [closed]在android中进行后台操作的最佳方式? [关闭]
【发布时间】:2018-06-07 02:38:03
【问题描述】:

在后台只运行一个实例的情况下,对不同数据集多次运行后台操作的最佳方式是什么?

【问题讨论】:

  • 欢迎来到 Stack Overflow!使用格式化工具使您的帖子更具可读性。代码块应类似于 code block。如果需要,请使用 粗体 斜体
  • 创建服务并使用 Firebase JobDispatcher 在某个时间点或满足某些条件时执行该服务器。

标签: android


【解决方案1】:

您可以利用 WorkManager 架构组件来实现它。按如下方式安排PeriodicWorkRequest

创建 Worker 类:

public class MyWorker extends Worker {
    @Override
    public Worker.WorkerResult doWork() {

        // Do the work here

        // Indicate success or failure with your return value:
        return WorkerResult.SUCCESS;

        // (Returning RETRY tells WorkManager to try this task again
        // later; FAILURE says not to try again.)
    }
}

安排工作:

  PeriodicWorkRequest periodicWork = new 
  PeriodicWorkRequest.Builder(MyWorker.class, 12, TimeUnit.HOURS)
                                   .build();
  WorkManager.getInstance().enqueue(periodicWork);

这会创建一个 PeriodicWorkRequest 以每 12 小时定期运行一次。

您可以查看我在 SO 上的回答,该回答描述了 WorkManager 是否适合您的用例。

支持的最低 API 为 14。

根据文档:

  • WorkManger 将 JobScheduler 用于 API 23+
  • 对于 API 14-22

    • 如果在应用中使用 Firebase JobDispatcher 和可选的 Firebase 依赖,使用 Firebase JobDispatcher
    • 否则,使用自定义 AlarmManager + BroadcastReceiver 实现

【讨论】:

  • 请提及来自的API支持
  • @RanjithKumar 更新了信息
猜你喜欢
  • 2011-09-29
  • 2016-12-05
  • 2013-03-19
  • 2011-07-17
  • 1970-01-01
  • 2018-04-14
  • 2021-03-06
  • 2017-08-28
  • 1970-01-01
相关资源
最近更新 更多