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,啓動下,沒有報錯了。。。