Android 6.0 运行中手动去设置界面取消该app的某个权限,导致application被强制销毁造成app崩溃问题的解决

在Android 6.0系统中,运行时权限管理引入后,用户手动取消应用权限可能导致应用无响应并异常重启。问题表现为应用不执行Activity和Fragment的生命周期方法,但实际已挂起。当使用Fragment时,由于在应用被销毁后系统尝试回收Fragment,会导致崩溃。解决办法是在Fragment基类中创建抽象函数,确保每个Fragment在重建时正确设置布局ID,并在接收参数时处理可能的空指针异常。
摘要由CSDN通过智能技术生成

android 6.0版本已经发布了很长时间了,相信大家都知道6.0 系统加入了运行时权限管理,一些危险权限需要在运行时申请。

现在有这么一种情况,如果在一开始用户授予了某项权限,比如定位权限或者相机权限,当应用程序已经启动了,用户手动按下主键之后,回到桌面,打开设置,进入该应用程序的权限管理界面,对该应用程序的权限进行手动取消和给与权限,这时候应用就会莫名其妙的重启,且不会执行activity 和 fragment的生命周期函数,但实质应用已经挂掉了,很奇怪的是app不会被crash掉,且没有任何日志。
如果项目中使用到了Fragment,再次点击应用图标将app从后台唤醒,会出现app崩溃提示,大概就是以下异常:

     java.lang.IllegalStateException: Fragment does not have a view
    at android.support.v4.app.Fragment$1.onFindViewById(Fragment.java:1933)
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1057)
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252)
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1234)
    at and
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值