最近開發中有個別客戶反饋新換的三星、小米或者華為手機打開應用就閃退,而且是個別型號。針對這種情況特別查閱了一些資料,原因是8.0+系統的手機不允許后台創建服務,那么怎么修改呢,請看代碼:
1.修改啟動方法
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { context.startForegroundService(intent); } else { context.startService(intent); }
2.在service里onCreate()方法中再調用startForeground方法,不然就會出現ANR
startForeground(1, new Notification());
好了,以上就是這個問題的解決方法;如果這些東西修改過了,你的應用還是閃退,不要急,檢查一些你的應用中是否使用了極光推送等第三方服務,如果有問題就出在這里,在清單文件里面極光推送有個相互拉起的服務,這是個可選項,如下
<!-- 可選項。用於同一設備中不同應用的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.yzssoft.weiyifamily" /> </intent-filter> </service>-->
把以上代碼給注釋掉就OK了,有遇到此類情況的朋友趕快試一試吧。