博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Android P】 JobScheduler服务源码解析(三)—— 使用Job需要注意的点
阅读量:4294 次
发布时间:2019-05-27

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

Android Job 服务在系统中算是一个比较轻量级的服务,但是推出后,被很多应用运用进去了

前面两篇主要是解析Job 是怎么使用的。并且其原理如何。本篇着重于应用调试,这里会对自己使用Job 中遇到的坑,以及小技巧分享一下

调试知识扩展

adb shell cmd jobscheduler run -f -u 0 com.google.android.apps.turbo 106

// 强制执行google turbo 包下的JobID 为106的Job

adb shell cmd jobscheduler get-job-state -u 0 com.google.android.apps.turbo 106

//获取当前turbo jobID 为106 状态

adb shell cmd jobscheduler // 终端操作帮助文档

adb shell dumpsys jobscheduler pkgname // 查看当前包下面所有的job信息以及状态

adb shell dumpsys jobscheduler package com.android.phone // 查看com.android.phone 包下所有的job信息

Job使用注意点

  1. IllegalArgumentException: You’re trying to build a job with no constraints, this is not allowed.

    K:job必须要指定一个限制条件,如setMinimumLatency()

  2. StrictModeException or ANR

    K: JobService 是直接继承Service,和IntentService不一样,Jobservice 运行在主线程,如果访问网络等耗时操作会报异常或ANR

  3. 使用CancelAll会把同一UID下的所有job全部cancel

    K: JobSchedulerService.this.cancelJobsForUid(uid, reason);

  4. JobService 服务启动不了?

    K:1. 同一个UID下,当两个JobService对应的jobId相同时, 先注册的任务会被后注册的任务覆盖掉, 只会执行后注册的任务, 先注册的任务被取消了
    2. 如果JobService执行在独立的进程, 此时应用需要自启动权限, 相应的任务才会执行(针对于各个厂商对自启动App管控策略有关)

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

你可能感兴趣的文章
OpenGL ES 3.0(五)纹理
查看>>
OpenGL ES 3.0(八)实现带水印的相机预览功能
查看>>
OpenGL ES 3.0(九)实现美颜相机功能
查看>>
FFmpeg 的介绍与使用
查看>>
Android 虚拟机简单介绍——ART、Dalvik、启动流程分析
查看>>
原理性地理解 Java 泛型中的 extends、super 及 Kotlin 的协变、逆变
查看>>
FFmpeg 是如何实现多态的?
查看>>
FFmpeg 源码分析 - avcodec_send_packet 和 avcodec_receive_frame
查看>>
FFmpeg 新旧版本编码 API 的区别
查看>>
RecyclerView 源码深入解析——绘制流程、缓存机制、动画等
查看>>
Android 面试题整理总结(一)Java 基础
查看>>
Android 面试题整理总结(二)Java 集合
查看>>
学习笔记_vnpy实战培训day02
查看>>
学习笔记_vnpy实战培训day03
查看>>
VNPY- VnTrader基本使用
查看>>
VNPY - CTA策略模块策略开发
查看>>
VNPY - 事件引擎
查看>>
MongoDB基本语法和操作入门
查看>>
学习笔记_vnpy实战培训day04_作业
查看>>
OCO订单(委托)
查看>>