博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android学习使用JobService
阅读量:4228 次
发布时间:2019-05-26

本文共 2033 字,大约阅读时间需要 6 分钟。

Android学习使用JobService

关于

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

  因为要开发后台持续定位功能,然后就想着之前使用百度地图定位都是前台定位,所以还需要学习一下,顺便记录一下。

编写LocationJob继承JobService

  写一个简单地打印日志的耗时任务服务:

@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)public class LocationJob extends JobService {
private Handler handler = new Handler(new Handler.Callback() {
@Override public boolean handleMessage(@NonNull Message msg) {
JobParameters parameters = (JobParameters) msg.obj; //耗时操作,比如拉起一个定位服务 jobFinished(parameters,true); return true; } }); @Override public int onStartCommand(Intent intent, int flags, int startId) {
return START_STICKY; } @Override public boolean onStartJob(JobParameters params) {
Message message = Message.obtain(); message.obj = params; handler.sendMessage(message); Date times = new Date(); Log.e("后台数据",times.toString()); return true; } @Override public boolean onStopJob(JobParameters params) {
Log.i("后台数据", "onStopJob start"); return false; }}

  在AndroidManifest.xml配置文件中注册一下:

使用

  在需要启动jobservice的地方调用如下:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
shecduleJob(); } private int mJobId = 0; @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) private void shecduleJob() {
JobInfo.Builder builder = new JobInfo.Builder(mJobId++,new ComponentName(this, LocationJob.class)); builder.setRequiresCharging(true); //是否在充电时执行 builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY); builder.setRequiresDeviceIdle(false);//是否在空闲时执行 builder.setMinimumLatency(1000*60);//延迟多久后执行,毫秒 builder.setOverrideDeadline(1000*60*15);//最多延迟多久 JobScheduler scheduler = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE); scheduler.schedule(builder.build()); }

  效果图:

在这里插入图片描述
  基本上就是一分钟多一点启动一次服务。

转载地址:http://mpdqi.baihongyu.com/

你可能感兴趣的文章
MQTT协议基本介绍
查看>>
进程和线程是操作系统基本概念,了解一下
查看>>
SSL与TLS的区别以及介绍
查看>>
对象切割 - 常量引用传递
查看>>
北邮同学面经
查看>>
Effective C++条款16:成对使用new和delete时要采取相同形式
查看>>
sizeof与strlen
查看>>
一个递归+二分法的洗牌程序
查看>>
YUV格式注释
查看>>
一维、二维数组传参
查看>>
判断当前时间的下一秒是多少
查看>>
从文本文件中读取数据排序并输出到文本
查看>>
求一个整数数组中第二大的数
查看>>
删除一个链表中的节点
查看>>
计算机网络面试整理【转】
查看>>
cookie和session区别详解
查看>>
程序员失业第一步?斯坦福研究员用AI从编译器反馈中学习改Bug
查看>>
原创 | 电视广告流量预测中的“常识”陷阱,你掉进去了吗?
查看>>
DeepMind发布最新《神经网络中持续学习》综述论文!
查看>>
本科三篇顶会一作、超算竞赛冠军,2020清华本科特奖结果出炉
查看>>