安卓系统省电的秘密之JobScheduler

  L

JobScheduler是Android版本新引入的API, JobScheduler,顾名思义,是用来调度工作。工作被调度的条件包括网络变化,充电插拔,周期执行等。使用场景包括无线条件下数据下载上传等等。谷歌为什么要引入这个新API的呢?是为了省电而制定的一种规范。想想如果每个开发者都利用这个API进行wifi网络下数据上传,数据上传的操作将会被统一到同一个时间点,批量处理,这样比许多应用单独唤醒要省电的多。

  

下面展示一个小例子

  

主MainActivity   

builder.setRequiredNetworkType (JobInfo.NETWORK_TYPE_UNMETERED);代表免费的网络,通常就是指无线了

        公开课MainActivity延伸活动{   JobScheduler js;   JobInfo。Builder构建器;   @Override   保护空白>   公开课DemoService延伸JobService {   @Override   公共布尔>   & lt;服务   android: name="。DemoService”   android:许可=" android.permission.BIND_JOB_SERVICE "   android:出口=" true "/祝辞      

 Android省电的秘密之JobScheduler

  

  

  

1。不耗时的操作,这时你应该返回假

  

2。耗时的操作例如数据下载等,这是你应该开启一个新线程(因为JobService是跑在主线程的),并且返回真正的

  

<>强如果调度是任务执行失败了,怎么办?

  

任务失败的情况有很多,例如下载失败了,例如下载过程wifi断掉了。

  

没问题,谷歌提供了方便的重新调度的方法。

  

例如如果下载过程中,无线网络断掉了,JobService会回调onStopJob函数,这是只需要把函数的返回值设置为正确就可以了。当wifi重新连接后,JobService会重新回调onStartJob函数。

  

而如果下载失败了,例如上面的例子中的AsyncTask执行失败,怎么办呢?我们只需要在AsyncTask的onPostExecute中执行jobFinished (mJobParameters,真的),这里的真正的代表任务要在无线条件重新满足情况下重新调度。经典的写法如下。

  

        @Override   公共布尔>   @Override   公共布尔alt=" Android省电的秘密之JobScheduler ">

  

  

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!

安卓系统省电的秘密之JobScheduler