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,启动下,没有报错了。。。
联系客服