JobService的使用及源码分析

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

转载请注明出处:http://blog.csdn.net/fishle123/article/details/50790894

Google在Android 5.0中引入JobScheduler来执行一些需要满足特定条件但不紧急的后台任务,APP利用JobScheduler来执行这些特殊的后台任务时来减少电量的消耗。本文首先介绍JobSerice的使用方法,然后分析JobService的源码实现。

JobService的使用

使用JobScheduler的时候需要把待执行的后台任务封装到JobService中提交。下面就来介绍JobService的使用,首先看一下JobService是什么东东。

 

从上面的截图,可以看出JobService继承自Service,并且是一个抽象类。在JobService中有两个抽象方法onStartJob(JobParameters)onStopJob(JobParameters)。onStartJob在JobService被调度到的时候会执行,我们只需要继承JobService然后重写onStartJob方法,并在里面执行我们的后台任务就可以了。

下面给出一个JobService的使用实例。

首先,定义一个JobService的子类,如:

public class MyJobService extends JobService {
    public static final String TAG = MyJobService.class.getSimpleName();

    @Override
    public boolean onStartJob(JobParameters params) {
        Log.i(TAG, "onStartJob:" + params.getJobId());
        Toast.makeText(MyJobService.this, "start job:" + params.getJobId(), Toast.LENGTH_SHORT).show();
        jobFinished(params, false);//任务执行完后记得调用jobFinsih通知系统释放相关资源
        return false;
    }

    @Override
    public boolean onStopJob(JobParameters params) {
        Log.i(TAG, "onStopJob:" + params.getJobId());
        return false;
    }


}

在MyJobService中,onStartJob里面的逻辑非常简单:弹出一个Toast。定义完JobService之后,剩下的工作就是提交Job了,这里我们在Activity中实现,用户点击button来提交任务。Activity的代码如下:

public class MainActivity extends Activity {

    public static final String TAG = MainActivity.class.getSimpleName();
    private int mJobId = 0;

    private EditText mDelayEditText;
    private EditText mDeadlineEditText;
    private
WorkManager之SystemJobScheduler、SystemAlarmScheduler、GreedyScheduler三大调度器,源码流程详细解读 SystemJobScheduler的工作过程 先看其构造方法,它会将我们传递进来的WorkManagerImpl 与context进行保存,并在它的重载方法里获取了系统服务jobScheduler,要了解jobScheduler,推荐一篇博文可以看看JobScheduler的使用, 而另外一个参数SystemJobInfoConverter 则是用来将我们的workSpecs转化为JobInfo,这个JobInfo是jobScheduler需要的参数 ,用来描述任务的执行时间,条件,策略等一系列的行为。因 阅读详情

相关推荐

JobService 触发deviceidle条件(源码分析

需求 很多时候会遇到一些类似云控开关或下载升级patch的需求。大概思路都是要从服务器下载一个配置文件来完成云控的策略。那么什么时候去下载对用户来说一种比较好的体验? 这里提供一种思路是通过JobService来实现特定场景下出发任务的方法。 做法 JobService使用和代码分析可以参考这两篇博客: https://blog.csdn.net/allisonchen/article...

JobService 触发deviceidle条件(源码分析) 2151

JobService使用介绍

JobServiceAndroid L时候官方加入的组件。适用于需要特定条件下才执行后台任务的场景。由系统统一管理和调度,在特定场景下使用JobService更加灵活和省心,相当于是Service的加强或者优化。

allisonchen的专栏 2万+

Android JobService和JobScheduler 原理剖析

请支持原创~~ 版本基于:Android R 前言 最近在研究Iorap 的时候碰到了JobScheduler,这套机制是在Android L中就提出来的,而之前没有使用到也就不知其存在。简单过滤了下framework 的代码,发现虽然是一个小模块,却是五脏俱全、环环相扣。由于时间原因,本文主要结合实际情形简单分析JobScheduler 的实现过程。 框架图 本图来源:https://blog.csdn.net/allisonchen/article/details/792...

私房菜 4319

Android Service】JobService

JobService这个东西或许我们真的没有接触过,但是他的出现解决了特定的问题:比如电量优化、服务广播多重绑定执行任务等。公司的业务逻辑中就用到了这个Service,趁着空闲来总结篇。正好完善下自己的Service知识体系。 1、故事引入:JobService出现的背景 A:假如现在有个需求…我需要做一套推送逻辑,从服务器获得数据后向通知栏推送消息。 B:这个so easy,我搞个普通的service就ojbk了。service中做请求,请求解析完毕后台推送。 A:那好吧,我要添加需求了,为了友好用.

dev晴天的博客 5146

JobService与JobIntentService

JobService和JobIntentSerice是为了在程序关闭后仍然继续执行而创造的。 JobService与JobIntentService的关系类似于Service与IntentService的关系。JobService是在主线程中运行的,而JobIntentService会为每一次启动都准备一个子线程并在其中运行。 Service与InentService会因为App的停运而中止,而JobService与IntentService在App停运后会继续运行。

m0_57150356的博客 1526

Android JobService启动系统源码分析

Android JobService系统执行流程

qq_21763489的博客 572

Android JobService使用源码分析

Google在Android5.0中引入JobScheduler来执行一些需要满足特定条件但不紧急的后台任务,APP利用JobScheduler来执行这些特殊的后台任务时来减少电量的消耗。本文首先介绍JobSerice的使用方法,然后分析JobService源码实现。 JobService使用 使用JobScheduler的时候需要把待执行的后台任务封装到JobService中提交。下面...

weixin_30655219的博客 142

JobService

JobService:     Android 5.0以后,Google推出了一个JobService,用来执行一些并非即时执行的后台进程。 场景:     需要在稍后的某个时间点或者当满足某个特定的条件时执行一个任务。 使用:     在JobService中有两个抽象方法on...

lzlcharm的博客 486

Android JobScheduler介绍

JobScheduler上手还是比较简单的,由于本文是基于api23的源码,因此还有很多新功能没有在源码中展示出来,如setRequiresBatteryNotLow(设置Job对电量的要求)、setRequiresStorageNotLow(设置Job对存储空间的要求).

轻口味的专栏 1814

Android 电量优化】JobScheduler 源码分析 ( JobServiceContext 源码分析 | 闭环操作总结 | 用户提交任务 | 广播接收者接受相关广播触发任务执行 )

一、JobServiceContext 引入、 二、JobServiceContext 源码分析、 三、用户在应用层如何使用 JobScheduler、 四、用户提交任务、 五、广播接收者监听广播触发 JobService 执行任务、

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 1431

Android源码面试宝典之JobScheduler从使用到原理分析(三)【JobService、JobInfo】

本文,从Job任务的创建,到如何与JSC(JobServiceCotext)关联,到具体任务的绑定、执行进行了源码探索,相信大家到现在为止,对于JobScheduler的庐山真面目,脑海中已经有了些许自己的轮廓。但是,我们也知道,目前为止,仅仅是任务的创建、任务的执行原理我们了解、学习到了,但是任务何时执行的?约束条件如何监控job的?这些还未讲到。别着急,下一节,我们一起继续探索源码,解析其中的奥秘。

itbird的专栏 1373

Android系统分析之JobScheduler源码分析

1 调用流程 2 源码分析 /** * JobScheduler实体抽象类 */ abstract class JobScheduler { //定义接口方法 schedule(JobInfo job); cancel(int jobId); } /** * JobSched

xiaohuzhanshi的博客 603

Android开发技术文章整理

RxJava: 给 Android 开发者的 RxJava 详解 MVP+Retrofit+RxJava: Android 教你一步步搭建MVP+Retrofit+RxJava网络请求框架 JobService: JobService使用源码分析

Tiger、 505

(八)JobSchedule 的使用以及源码分析

版权声明:本文为博主原创文章,未经博主允许不得转载。 本文纯个人学习笔记,由于水平有限,难免有所出错,有发现的可以交流一下。 一、概述 JobScheduler 是在 Android 21 新增加的特性,他可以把一些不是很紧急的任务,放到合适的时候进行批量处理,在电量优化中有很大的作用。 1.把任务整合起来,等到充电状态或者/Wifi 连接情况下进行执行,充电时候就不会在...

孤独灬啸月 4063
上一篇: Android截图的两种方法
下一篇: 使用TouchDelegate增大控件的触摸范围
fishle123
博客等级 码龄18年 41粉丝 15原创
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值