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 "/祝辞
1。不耗时的操作,这时你应该返回假
2。耗时的操作例如数据下载等,这是你应该开启一个新线程(因为JobService是跑在主线程的),并且返回真正的
<>强如果调度是任务执行失败了,怎么办? 强>
任务失败的情况有很多,例如下载失败了,例如下载过程wifi断掉了。
没问题,谷歌提供了方便的重新调度的方法。
例如如果下载过程中,无线网络断掉了,JobService会回调onStopJob函数,这是只需要把函数的返回值设置为正确就可以了。当wifi重新连接后,JobService会重新回调onStartJob函数。
而如果下载失败了,例如上面的例子中的AsyncTask执行失败,怎么办呢?我们只需要在AsyncTask的onPostExecute中执行jobFinished (mJobParameters,真的),这里的真正的代表任务要在无线条件重新满足情况下重新调度。经典的写法如下。
@Override 公共布尔> @Override 公共布尔alt=" Android省电的秘密之JobScheduler ">
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
安卓系统省电的秘密之JobScheduler