您可以使用 Evernote 中的 Android-Job 库
implementation 'com.evernote:android-job:1.2.6'
Android 实用程序库,用于在后台运行延迟的作业。
根据 Android 版本,JobScheduler、GcmNetworkManager 或 AlarmManager 会被使用
用法
JobManager 类用作入口点。
您的作业需要扩展类 Job。
使用相应的构建器类创建一个 JobRequest,并使用 JobManager 安排此请求。
在您可以使用 JobManager 之前,您必须初始化单例。
您需要提供一个 Context 并在此之后添加一个 JobCreator 实现。
JobCreator 将作业标签映射到特定的作业类。建议在您的 Application 对象的 onCreate() 方法中初始化 JobManager,但如果您无权访问 Application 类,还有一个替代方法。
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
JobManager.create(this).addJobCreator(new DemoJobCreator());
}
}
public class DemoJobCreator implements JobCreator {
@Override
@Nullable
public Job create(@NonNull String tag) {
switch (tag) {
case DemoSyncJob.TAG:
return new DemoSyncJob();
default:
return null;
}
}
}
之后您就可以开始安排作业了。
public class DemoSyncJob extends Job {
public static final String TAG = "job_demo_tag";
@Override
@NonNull
protected Result onRunJob(Params params) {
// run your job here
return Result.SUCCESS;
}
public static void scheduleJob() {
new JobRequest.Builder(DemoSyncJob.TAG)
.setExecutionWindow(30_000L, 40_000L)
.build()
.schedule();
}
}
这是 android 中的 Default Job Scheduler 的高级版本,比默认的具有很多限制和向后兼容性的功能。