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服务:
<!-- since 1.8.0 option 可选项。用于同一设备中不同应用的JPush服务相互拉起的功能。 -->
<!-- 若不启用该功能可删除该组件,将不拉起其他应用也不能被其他应用拉起 -->
<service
android:name="cn.jpush.android.service.DaemonService"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="cn.jpush.android.intent.DaemonService"/>
<category android:name="com.project.purse"/>
</intent-filter>
</service>
看备注是拉起其他极光相关的服务,就给掉了,sdk还是用的jpush-android-2.1.3.jar,启动下,没有报错了。。。
本文由 创作,采用 知识共享署名4.0 国际许可协议进行许可。本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。最后编辑时间为: 2020/05/15 07:16