JobScheduler任务调度

来源:互联网 发布:苹果手机免费看书软件 编辑:程序博客网 时间:2024/05/29 06:32
Android 5.0中如何使用JobScheduler API。JobScheduler API允许开发者在符合某些条件时创建执行在后台的任务。public class OnLineGetActivityService extends JobService {// public static boolean bSend;private Handler mJobHandler = new Handler(new Handler.Callback() {    @Override    public boolean handleMessage( Message msg ) {        jobFinished((JobParameters) msg.obj, false);        //如果你没有调用jobFinished你的任务只会执行一次,传入false会循环执行        return true;    }} );@Overridepublic boolean onStartJob(JobParameters params) {    LogUtil.e("TAG","onStartJob-----startActivtiy");        //开始获取        getActivityName(params);    return true;    //返回true后}private void getActivityName(JobParameters params) { //重复执行的任务    mJobHandler.sendMessage( Message.obtain( mJobHandler, 2, params));    //执行完毕通知调用jobFinished方法}@Overridepublic boolean onStopJob(JobParameters params) {    mJobHandler.removeMessages(2);//执行完毕移除消息    return false;} //Activity中        JobInfo.Builder builder1 = new JobInfo.Builder(2, new ComponentName(getPackageName(), OnLineGetActivityService.class.getName()));        builder1.setPeriodic(500);//500毫秒执行一下        mJobScheduler.schedule(builder1.build());builder1.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY);//设置网络类型 最后需要 清单文件绑定和使用这个JobService的权限。       <service android:name=".JobSchedulerService"         android:permission="android.permission.BIND_JOB_SERVICE" />

//部分api介绍,摘抄自http://blog.csdn.net/bboyfeiyu/article/details/44809395
setMinimumLatency(long minLatencyMillis): 这个函数能让你设置任务的延迟执行时间(单位是毫秒),这个函数与setPeriodic(long time)方法不兼容,如果这两个方法同时调用了就会引起异常;
setOverrideDeadline(long maxExecutionDelayMillis):
这个方法让你可以设置任务最晚的延迟时间。如果到了规定的时间时其他条件还未满足,你的任务也会被启动。与setMinimumLatency(long time)一样,这个方法也会与setPeriodic(long time),同时调用这两个方法会引发异常。
setPersisted(boolean isPersisted):
这个方法告诉系统当你的设备重启之后你的任务是否还要继续执行。
setRequiredNetworkType(int networkType):
这个方法让你这个任务只有在满足指定的网络条件时才会被执行。默认条件是JobInfo.NETWORK_TYPE_NONE,这意味着不管是否有网络这个任务都会被执行。另外两个可选类型,一种是JobInfo.NETWORK_TYPE_ANY,它表明需要任意一种网络才使得任务可以执行。另一种是JobInfo.NETWORK_TYPE_UNMETERED,它表示设备不是蜂窝网络( 比如在WIFI连接时 )时任务才会被执行。
setRequiresCharging(boolean requiresCharging):
这个方法告诉你的应用,只有当设备在充电时这个任务才会被执行。
setRequiresDeviceIdle(boolean requiresDeviceIdle):
这个方法告诉你的任务只有当用户没有在使用该设备且有一段时间没有使用时才会启动该任务。

0 0
原创粉丝点击