Android 8.0 启动 出错 Not allowed to start service Intent { 包名} app is in background uid UidRecord
FATAL EXCEPTION: Thread-13
Process: com.project.purse, PID: 12962
java.lang.IllegalStateException: Not allowed to start service Intent { flg=0x20 cmp=com.android.browser/cn.jpush.android.service.DaemonService }: app is in background uid null
at android.app.ContextImpl.startServiceCommon(ContextImpl.java:1701)
at android.app.ContextImpl.startService(ContextImpl.java:1657)
at android.content.ContextWrapper.startService(ContextWrapper.java:644)
at cn.jpush.android.service.l.run(Unknown Source:108)
at java.lang.Thread.run(Thread.java:784)
错误原因是因为:Android 8.0 不再允许后台service直接通过startService方式去启动。
所以改为startForegroundService方式启动即可。
但是在代码中如果没有使用到startService的方式时,还是会有这个启动报错的情况下,可能是另一种原因。
极光推送,jpush-android-2.1.3.jar版本的。
因为项目是前两年的项目了,一直维护更新至今,但最近老有用户8.0版本的启动报错。但在测试机上6.0版本的却没有问题,去搜索后发现貌似是8.0不能startService方式去启动服务,但是我代码中又没有使用。查看错误信息时,每次都是在Jpush下报的错,想着是不是极光的原因,就把极光的初始化操作//掉了,是没报错了,但是极光还要用,就去更新了极光版本到jpush-android-3.1.6.jar
使用时也没有报错了。但是还要再调一遍,好麻烦啊!!!
在AndroidManifest.xml文件查看激光配置时,发现了一个Server服务:
看备注是拉起其他极光相关的服务,就给掉了,sdk还是用的jpush-android-2.1.3.jar,启动下,没有报错了。。。
更多相关文章
- Android进阶之android应用的SDK版本之间的切换
- ffmpeg3.3 编译 android 系统版本 32位 和64 位 动态库
- 实时获取Android 各版本电量的统一方法
- PC&移动平台设备检测库(平台、版本、操作系统、方向)
- android历史版本
- Android后台保活,这里有你需要的所有姿势。2019,基于API26 Android
- 利用productFlavors实现一套代码打包多版本
- Android 获取系统信息(手机品牌、型号、安卓版本号等等)