美文网首页
小米系统居然在动态请求权限的时候再次实例化当前activity

小米系统居然在动态请求权限的时候再次实例化当前activity

作者: NullPointerFang | 来源:发表于2019-06-25 16:41 被阅读0次

    代码很简单

    代码

    可以看到就只有两句话,请求权限和请求行为得到用户答复之后的回调。

    说说问题,在小米手机上居然会出现两次弹框,甚至是三次。而且多次探矿之后根本不走回调

    后来的发现:不走回调之后按下返回键居然没有退出activity而且开始走回调了。

    由此引发的猜想:真相只有一个,在权限弹框的时候,再一次实例了当前的activity,前面的activity处于不可见状态当然也就不走回调了。而且按下返回键产生的奇怪现象也有了合理的解释,activity是被finish了,只不过是新生成的activity,我们还有一个被覆盖的出来了,造成activity没有被finish的错觉。同时由于获得焦点,回调也开始走了。

    验证猜想:不让多次实例activity,将activity改成单例模式。实验结果:仍然多次弹框但是会走回调函数。猜想验证通过。由此产生的联想:在小米中获取权限要在SplashActivity进入之后,这样才能通过小米的测试并且比较顺利的上架的原因也是这个。

    那么接下来应该怎么办?喊雷军改bug?

    相关文章

      网友评论

          本文标题:小米系统居然在动态请求权限的时候再次实例化当前activity

          本文链接:https://www.haomeiwen.com/subject/wgkxcctx.html