Android 9.0 JobScheduler(一) JobScheduler的使用

本文介绍了Android 9.0中的JobScheduler,它是一个用于作业调度的系统服务,能智能地根据约束条件执行作业。文章详细讲解了JobScheduler的组件,包括JobScheduler、JobInfo、JobInfo.Builder、JobService和JobParameters,以及它们的使用步骤和API。还阐述了如何创建JobService子类、设置作业约束以及如何调度Job。
摘要由CSDN通过智能技术生成

欢迎大家关注我的掘金帐号
我会在那里定期更新最新版本的Android Framework源码模块分析~~

1.JobScheduler简介

JobScheduler是一个系统提供的框架,旨于在应用进程、而非系统进程内执行各种作业调度,其原理是启动通过bindservice的方式启动对应应用进程的service,并在Service中进行作业。在执行一个Job时,将会使得系统持有一个WakeLock锁,以防止系统休眠进入Suspend。

在创建一个作业时,会设置多个约束条件,比如可以指定特定的网络、是否只在充电时执行作业等,JobScheduler框架会根据这些约束条件,智能地执行作业,并尽可能对作业进行批操作和推迟,以防止频繁唤醒系统而影响功耗,还可以指定该Job的执行的截至期限。如果不指定一个作业的截至期限,那么该作业可能会在任意一个时刻运行,这取决于JobScheduler的内部队列。

2.JobScheduler组件

JobScheduler的使用比较简单,JobScheduler框架为应用提供了如下四个组件,通过这四个类的API可以让用户在应用中创建一个作业,并让系统对他进行调度。

  • 1.JobScheduler

JobScheduler类负责将应用需要执行的作业发送给框架,以准备对该应用Job的调度。JobScheduler是一个系统服务,可通过如下方式获取:

JobScheduler mJobScheduler = (JobScheduler) Context.getSystemService(Context.JOB_SCHEDULER_SERVICE). 
  • 2.JobInfo

JobInfo是传递给JobScheduler类的数据容器,它封装了针对调用应用程序调度作业所需的各种约束,也可以认为一个JobInfo对象对应一个作业,JobInfo对象通过JobInfo.Builder创建。它将作为参数传递给JobScheduler:

mJobScheduler.scheduler(mJobInfo);
  • 3.JobInfo.Builder

JobInfo.Builder是JobInfo的一个内部类,顾名思义,它就是用来创建JobInfo的Builder类。

JobInfo.Builder mBuilder = new JobInfo.Builder(id,new ComponentName(this,MyJobService.class));
mJobInfo = mBuilder.build();
  • 4.JobService

JobService是一个继承于Service的抽象类,他作为系统回调执行作业内容的终端,JobScheduler框架将通过bindService()方式来启动该服务.因此,用户必须在应用程序中创建一个JobService的子类,并实现其onStartJob()等回调方法,以及在清单文件中对它授予如下权限:

<service android:name=".MyJobService"
    android:permission="android.permission.BIND_JOB_SERVIC
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值