android啟動服務(wù)失敗,提示:Unable to start service Intent { cmp=xxx/.xxx} U=0: not found。檢查清單文件服務(wù)配置沒有錯,啟動服務(wù)的方法也沒錯。
startService(Intent(this, TestService::class.java))
場景:我的程序是系統(tǒng)應(yīng)用,運行于9.0,作為launcher使用,在application onCreate中啟動服務(wù)。試過延遲啟動服務(wù)和配置action和Package的方式啟動服務(wù)同樣報錯。
最終發(fā)現(xiàn)清單文件里application配置了directBootAware屬性,意思是允許程序在系統(tǒng)未啟動完成時啟動(解鎖階段),但是TestService卻沒有相關(guān)配置。因此當(dāng)程序啟動時服務(wù)是找不到的,通過配置以下屬性解決問題:
<service android:name=".TestService"
android:directBootAware="true"
android:enabled="true"/>
- android:directBootAware:是否允許系統(tǒng)解鎖設(shè)備之前運行服務(wù),默認(rèn)false
- android:enabled:系統(tǒng)是否可實例化service,默認(rèn)true
另外出現(xiàn)的一個異常:
java.lang.IllegalStateException: SharedPreferences in credential encrypted storage are not available until after user is unlocked
這個錯誤會導(dǎo)致程序崩潰,原因設(shè)備未解鎖前不可讀取SharedPreferences數(shù)據(jù)。在配置了directBootAware屬性后,在程序啟動的時候、系統(tǒng)沒準(zhǔn)備好前去操作sp就會出現(xiàn)這個異常。
<application
android:defaultToDeviceProtectedStorage="true"
。。。。。/>
application 中配置defaultToDeviceProtectedStorage屬性解決此問題。文章來源:http://www.zghlxwxcb.cn/news/detail-514572.html
我遇到的情況是第二個問題存在導(dǎo)致程序不停閃退,因為是launcher,會被系統(tǒng)不停的重復(fù)拉起。導(dǎo)致實際上程序正常啟動的時候系統(tǒng)已經(jīng)準(zhǔn)備好了,這個時候拉起服務(wù)是沒有問題的。
也就是說不停的閃退導(dǎo)致恰好避開了服務(wù)無法拉起的bug。這里排查花費了好多時間,做個記錄。文章來源地址http://www.zghlxwxcb.cn/news/detail-514572.html
到了這里,關(guān)于android服務(wù)啟動失敗Unable to start service Intent U=0: not found的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!