在android中做背景操作的最佳方式?

时间:2018-06-07 02:38:03

标签: android

在不同的数据集上多次运行后台操作的最佳方法是什么,只有一个实例在后台运行?

1 个答案:

答案 0 :(得分:3)

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

创建工人类:

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 for API 23 +
  •   
  • API 14-22

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