最近开发中有个别客户反馈新换的三星、小米或者华为手机打开应用就闪退,而且是个别型号。针对这种情况特别查阅了一些资料,原因是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了,有遇到此类情况的朋友赶快试一试吧。