Android 5.0版本以前,可以使用AlarmManager类来安排任务,然而在新版本的Android中,谷歌推荐使用JobScheduler来调度任务。JobScheduler可以更好地管理运行的任务,可以考虑设备充电、网络连接等因素来管理任务。
下面是一个简单的使用JobScheduler安排重复任务的代码示例:
创建JobService:
public class MyJobService extends JobService {
private static final int JOB_ID = 1;
@Override
public boolean onStartJob(JobParameters params) {
// 在这里执行重复的任务
// 返回true,表示后台任务需要一些时间来完成
return true;
}
@Override
public boolean onStopJob(JobParameters params) {
// 当任务被取消时执行
return true;
}
public static void scheduleJob(Context context) {
// 安排JobScheduler
JobScheduler jobScheduler =
(JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
JobInfo jobInfo = new JobInfo.Builder(JOB_ID, new ComponentName(context, MyJobService.class))
// 设置任务重复的时间
.setPeriodic(TimeUnit.MINUTES.toMillis(15))
.build();
jobScheduler.schedule(jobInfo);
}
}
在需要安排任务的地方调用MyJobService.scheduleJob(Context)
即可。
需要注意的是,重复任务的最小间隔是15分钟,如果设定更短的间隔会被视为无效。所以需要自行处理短时间任务的间隔。