美文网首页
JobScheduler

JobScheduler

作者: 雨来 | 来源:发表于2021-06-23 15:52 被阅读0次

什么是jobScheduler

jobscheduler是 android 在5.0上针对降低功耗而提出的一种策略方案,自android5.0以来,jobScheduler 已成为执行后台任务的首选方案 google的意思 是在执行所有的后台任务都应该使用它(在jetpack workManager出现之前)。
job: 工作 任务
scheduler:调度器

为什么出现jobScheduler

在开发中,我们为了节约电池电量,经常要在间隔的某个时间点或系统的某种状态发生变化后去执行任务,例如 手机充电的时候 网络连接的时候
1、针对间隔时间段去执行任务 我们要使用AlarmManager
2、针对手机充电状态 网络连接状态 我们要使用监听系统广播
这面的步骤是比较麻烦的 而使用jobScheduler则方便的多

JobScheduler的使用步骤 (分为4个步骤)

1、创建执行任务的Service
class JobTestService:JobService() {
//     companion object{
//         const val TAG = "JobTestService"
//     }

    private  val TAG = "JobTestService"

    override fun onStartJob(params: JobParameters?): Boolean {
        //开始业务逻辑
        var jobId = params?.jobId
        Log.d(TAG, "onStartJob: "+jobId)
        return false
    }


    override fun onStopJob(params: JobParameters?): Boolean {
        //取消业务逻辑
        var jobId = params?.jobId
        Log.d(TAG, "onStopJob: "+jobId)
        return false
    }


}

记着要在清单文件中注册 还要加上权限

<!--JobService注册在清单文件中 因为是四大组件之一Service的子类所以是一样的 然而jobService还要加一个权限-->
        <service android:name=".JobTestService"
            android:permission="android.permission.BIND_JOB_SERVICE"
            />
2、获取jobScheduler对象

       //1、获取jobScheduler对象
        var jobScheduler:JobScheduler = getSystemService(Context.JOB_SCHEDULER_SERVICE) as JobScheduler

3、创建JobInfo对象并添加约束条件(至少要有一个约束条件)
  // 2、创建jobInfo  (创建jobInfo的时候必须要添加一个约束条件,如果一下也不添加则会报错的)
        val JOB_ID = 100;
        var build:JobInfo.Builder  = JobInfo.Builder(JOB_ID, ComponentName(this,JobTestService::class.java))
        //通过build设置条件 (这个条目的意思 必须是充电状态 才会执行这个job)
//        build.setRequiresCharging(true)
//        //必须连接网络 这个任务才会执行
        build.setRequiredNetworkType(NETWORK_TYPE_ANY)

        //根据约束条件,创建jobInfo对象
        var jobInfo = build.build()

4、开启jobScheduler
jobScheduler.schedule(jobInfo)

测试是否可行?

先把手机网络关闭 安装app 打开app后 开启网络后 看看onJobStart方法里的日志输出了没有 如果输出则测试成功


image.png

相关文章

  • JobScheduler

    JobScheduler JobScheduler是Android L(API21)新增的特性,用于定义满足某些条...

  • 从JobScheduler到WorkManager

    JobScheduler介绍 JobScheduler是一个任务调度的类。它与AlarmManager不同的是这个...

  • SparkStreaming源码之JobScheduler

    SparkStreaming源码之JobScheduler篇 首先看下JobScheduler这个类是在什么时候被...

  • Android省电的秘密之JobScheduler

    JobScheduler是Android L版本新引入的API,JobScheduler,顾名思义,是用来调度工作...

  • JobScheduler

    什么是jobScheduler jobscheduler是 android 在5.0上针对降低功耗而提出的一种策略...

  • JobScheduler

    概述 JobScheduler是安卓5.0版本推出的API,允许开发者在符合某些条件时创建执行在后台的任务。在An...

  • JobScheduler

    JobScheduler简介 JobScheduler在api 21被引入,作为一个系统服务,它可以用于统一的调度...

  • jobscheduler精华

    参考源码: JobInfo 以及 JobScheduler

  • JobScheduler的使用和原理

    1、JobScheduler的使用 1.1 简介 JobScheduler主要用于在未来某个时间下满足一定条件时触...

  • Android JobScheduler的使用和原理

    我们先看一下JobScheduler的使用,了解一下JobScheduler的用法,在看一下JobSchedule...

网友评论

      本文标题:JobScheduler

      本文链接:https://www.haomeiwen.com/subject/tcubyltx.html