【原创】JobIntentService使用 admin 2023-08-23 14:15:01 篇首语:本文由小编为大家整理,主要介绍了【原创】JobIntentService使用相关的知识,希望对你有一定的参考价值。 参考技术A 最近App出现了一个线上crash,日志如下: 具体原因是因为从android 8.0开始禁止应用在后台运行时创建Service。 网上的解决方案大致有以下几种: 1.通过Context.startForegroundService()方式启动一个前台Service,前台Service的启动没有受到限制。 2.集成Google Firebase Messaging。 3.使用JobIntentService。 其中方案一最简单,并且是国内大多数blog博主推荐的解决方案,但是考虑到项目需求,启动一个前台Service实在是不合适。 方案二、三普遍被国外开发者所采用,但是Google Firebase毕竟在国内使用会有诸多限制,于是个人决定采用方案三来解决。 JobIntentService是Android 8.0 新加入的类,它也是继承自Service,根据官方的解释: 大致是说JobIntentService用于执行加入到队列中的任务。对Android 8.0及以上的系统,JobIntentService的任务将被分发到JobScheduler.enqueue执行,对于8.0以下的系统,任务仍旧会使用Context.startService执行。 JobIntentService具体使用起来非常简单,它已经封装了大量的内部逻辑,只需要调用enqueue()就可以了。 使用示例: 1.在Manifest中声名Permission: 2.在Manifest中声名Service: 3.实现JobIntentService类: 4.需要调用的地方: YourService.enqueueWork(context, new Intent()); 我们可以看到,JobIntentService的使用相比JobService简化了很多,开发者甚至不需要关心JobIntentService的生命周期,不需要startService()方法,也就避免了开头中的crash问题,通过静态方法就可以启动,可以说是非常友好了。 以上是关于【原创】JobIntentService使用的主要内容,如果未能解决你的问题,请参考以下文章 RSLogix5000 v19.0的序列号是多少啊 Latex 中cite的使用 您可能还会对下面的文章感兴趣: 相关文章 浏览器打不开网址提示“ERR_CONNECTION_TIMED_OUT”错误代码的解决方法 如何安装ocx控件 VMware的虚拟机为啥ip地址老是自动变化 vbyone和EDP区别 linux/debian到底怎么重启和关机 苹果平板键盘被弄到上方去了,如何调回正常? 机器学习常用距离度量 如何查看kindle型号