Android开发——JobScheduler机制
0. 前言
在Android Lollipop版本中增加了JobScheduler API,JobScheduler翻译为任务调度器,可以替代WakeLodk和Alarm运行任务。那么它们的区别在哪呢?JobScheduler又有什么特别之处呢?本文原创,转载请注明出处为SEU_Calvin的博客。
1. JobScheduler的省电功能
之所以说JobScheduler可以替代WakeLodk和Alarm运行任务,是因为后者在每个APP中是相互独立的,而JobScheduler运行在操作系统层面。举个例子,如果10个APP每半小时唤醒设备一次,由于这些任务的执行时机不可能同步,因此使用WakeLodk和Alarm一个小时内设备被唤醒了20次!但由于JobScheduler是操作系统层面的,因此系统会更有效地执行所有调度工作,每小时设备的唤醒次数会显著减少。
可能有朋友会问了,那使用JobScheduler每小时设备被唤醒次数被降低到多少次呢?这个还真说不准,为什么说不准。是因为JobScheduler允许设定获取数据的时间间隔,比如把唤醒时间限制在8min后10min之前,这就给操作系统留出了一定的调整范围,使系统更好地协调设备唤醒任务,会达到一定的省电效果。2014年Google开发大会上指出,如果每个APP都使用这个API,那么可以节约15%到20%的电量。
2. JobScheduler拥有更多的触发选项
JobScheduler比AlarmManager有更多的触发选项,后者只有一个定时功能。
//Use the android.app.job.JobInfo.Builder toconfigure how the scheduled task should run.
//You can schedule the task to run underspecific conditions, such as:
//1.The device is charging
//2.The device is connected to an unmeterednetwork
//3.The system deems the device to be idle
//4.Completion with a minimum delay or within aspecific deadline
这四个例子包括充电状态、Wifi状态、设备空闲以及延长失败链接后重连的间隔时间, JobScheduler包下了这些状态的检测。有助于开发者configure how the scheduled task should run。
3. JobScheduler的一些补充
JobScheduler一个值得一提的是执行重复工作的能力,上面的状态4也提到了,这里的重复工作执行周期可以是线性的,也可以是指数性衰减的,即JobScheduler有两种延时工作的衰减方式,即线性衰减和指数衰减。
因为当我们的APP不处于前台时,可能并不需要这种频繁的数据更新,当然你依旧频繁的数据更新也没有让用户把耗电的罪名怪到你头上,因此为了Android生态的更加美好,我还是建议你如果看到了这篇文章,请尽可能的优化好你的APP。
关于JobScheduler的具体使用等可以参考这篇文章。
Android开发——JobScheduler机制的更多相关文章
- Android开发——Accessibility机制实现模拟点击(微信自动抢红包实现)
1. 何为Accessibility机制 许多Android使用者因为各种情况导致他们要以不同的方式与手机交互.对于那些由于视力.听力或其它身体原因导致不能方便使用Android智能手机的用户,And ...
- Android开发学习之路-回调机制学习笔记
不知道是我学Java的时候没有认真听还是怎么的,曾经一直不知道什么是“回调”,它有什么用,百度一大堆,都太复杂看不明白(好吧是我笨),所以想把自己理解的分享给其他看到的人,大家都真正认识一下这个重要的 ...
- java中的反射机制在Android开发中的用处
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反 ...
- 《Android开发艺术探索》读书笔记 (2) 第2章 IPC机制
2.1 Android IPC简介 (1)任何一个操作系统都需要有相应的IPC机制,Linux上可以通过命名通道.共享内存.信号量等来进行进程间通信.Android系统不仅可以使用了Binder机制来 ...
- Android开发之漫漫长途 Ⅵ——图解Android事件分发机制(深入底层源码)
该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列.该系列引用了<Android开发艺术探索>以及<深入理解And ...
- Android开发之漫漫长途 ⅥI——Android消息机制(Looper Handler MessageQueue Message)
该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列.该系列引用了<Android开发艺术探索>以及<深入理解And ...
- 《android开发艺术探索》读书笔记(十)--Android的消息机制
接上篇<android开发艺术探索>读书笔记(九)--四大组件 No1: 消息队列MessageQueue的内部存储结构并不是真正的队列,而是采用单链表的数据结构来存储消息列表,因为单链表 ...
- 《android开发艺术探索》读书笔记(二)--IPC机制
接上篇<android开发艺术探索>读书笔记(一) No1: 在android中使用多进程只有一种方法,那就是给四大组件在AndroidMenifest中指定android:process ...
- Android开发艺术探索——第二章:IPC机制(中)
Android开发艺术探索--第二章:IPC机制(中) 好的,我们继续来了解IPC机制,在上篇我们可能就是把理论的知识写完了,然后现在基本上是可以实战了. 一.Android中的IPC方式 本节我们开 ...
随机推荐
- JavaScript函数节流(throttle)与函数去抖(debounce)
对于浏览器窗口大小改变的时候,来动态改变页面元素的大小,可以采用window的resize事件,实现代码: <script type="text/javascript"> ...
- 学习git踩坑之路
第一次使用git: 1.使用CentOS Linux release 7.3.1611 (Core),内核版本3.10.0-514.el7.x86_64 2.安装git: root权限运行:yum ...
- Microsoft SQL 关系数据库的使用指南
Microsoft SQL 关系数据库的使用指南 https://docs.microsoft.com/zh-cn/sql/relational-databases/database-features
- Visual Studio 2010详细安装过程
Visual Studio 2010在目前看来,应该是使用得比较多的一款微软的软件开发工具集合了,因为它具有以下优点:(1)启动速度快:在相同环境下,相比于Visual Studio 2015来说,2 ...
- MySQL复制 slave_exec_mode 参数IDEMPOTENT 说明
背景: 今天无意当中看到参数slave_exec_mode,从手册里的说明看出该参数和MySQL复制相关,是可以动态修改的变量,默认是STRICT模式(严格模式),可选值有IDEMPOTENT模式 ...
- .Net 环境
更多系统版本下载:https://www.microsoft.com/net/download VSCode :https://code.visualstudio.com/
- ln 硬链接介绍
硬链接:在linux文件系统中多个文件名指向同一个索引节点(Inode)是正常允许的.硬链接文件就相当于文件的另一个入口. 硬链接的作用:允许一个文件拥有多个有效路径(多个入口),这样用户就可以建立硬 ...
- cut切割,简单的取列
cut 切割,简单的取列命令. -d 指定分隔符 -f 数字 取第几列 -c n-m 取n列到m列字符. //提取字符,不常用 例如:已知bqh.txt文件里的内容为“I am bqh myqq is ...
- VS2010使用Release进行调试的三个必须设置选项
How to: Debug a Release Build You can debug a release build of an application. To debug a release bu ...
- Apache的权限设置与构建虚拟web主机
实验拓扑图: 实验要求: 1. 搭建WEB服务器,能访问默认站点,并使用awstats软件能监控到默认站点的访问情况. 2. 修改Apache的主配置文件,设置1.10只能访问awstats网站, ...