JobScheduler简单使用

JobScheduler任务分发器,将Service和常见BroadcastReceiver结合,可以实现简单的调用

使用方法主要用到3个类

JobInfo任务概要信息,主要封装有该任务的触发条件

JobService 继承自Service,用来处理任务的

JobScheduler任务调度,主要是启动服务,处理触发回调

@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public class MyJobScheduler extends JobService {
    @Override
    public boolean onStartJob(JobParameters params) {
        System.out.println("job start to perform");
         //return true 表示任务执行完毕,返回true表示需要开发者自己调用jobFinish()结束任务
        return false;
    }

    @Override
    public boolean onStopJob(JobParameters params) {
        System.out.println("job finished");
        return false;
    }
}
int jobId = 1;
JobInfo.Builder builder = new JobInfo.Builder(jobId , new ComponentName(getPackageName(), MyJobScheduler.class.getName()));
builder.setMinimumLatency(5000);  //任务至少延迟多少毫秒后执行
builder.setOverrideDeadline(30000); //任务至多延迟多少毫秒后执行
//builder.setPeriodic(3000);  //任务周期性执行 该方法不能喝上面两个方法连用
//JobInfo.NETWORK_TYPE_NONE(无网络时执行,默认)、
//JobInfo.NETWORK_TYPE_ANY(有网络时执行)、
//JobInfo.NETWORK_TYPE_UNMETERED(网络无需付费时执行)
builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED); //设置任务执行的网络环境
//builder.setRequiresDeviceIdle(true); //设置是否在cpu空闲时执行
//builder.setRequiresCharging(true);   //社会是否在充电时执行
//RECEIVE_BOOT_COMPLETED权限与开机启动有关,有了该权限之后可以监听到开机启动的广播,可以让app随开机启动而启动
//虽然可以开机启动,但是会导致手机开机慢,而且系统会将开机启动的应用放在一个列表中,供用户自己处理
//builder.setPersisted(true);    //重启后是否还要继续执行,需要声明权限RECEIVE_BOOT_COMPLETED

JobScheduler js = (JobScheduler) getSystemService(JOB_SCHEDULER_SERVICE);
js.schedule(builder.build());

<service android:name=".ui.androidbasic.MyJobScheduler"
    android:permission="android.permission.BIND_JOB_SERVICE"/>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值