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管控策略有关)

更多相关文章

  1. Windows平台下如何使用Android(安卓)NDK
  2. android中延迟执行某个任务
  3. android进程间通讯(3)--使用socket
  4. Android使用XML文件定义用户界面
  5. Android使用Intent Filter来响应隐式Intent
  6. 【Based Android】让你的android应用使用可爱的iphone备忘录字体
  7. 箭头函数的基础使用
  8. NPM 和webpack 的基础使用
  9. Python list sort方法的具体使用

随机推荐

  1. android 批量上传图片
  2. android开发 - NDK_PROJECT_PATH = null
  3. Android打开/关闭免提(SpeakerPhone)
  4. Android实现拖拉移动Item
  5. ubantu10.04配置android 开发环境
  6. 获取drawable里的路径
  7. Android基础教程——调节系统屏幕亮度
  8. github 简单记录
  9. 新手android中ListView实现音乐列表
  10. Android判断当前是否处于屏幕锁定状态