代码很简单
代码可以看到就只有两句话,请求权限和请求行为得到用户答复之后的回调。
说说问题,在小米手机上居然会出现两次弹框,甚至是三次。而且多次探矿之后根本不走回调
后来的发现:不走回调之后按下返回键居然没有退出activity而且开始走回调了。
由此引发的猜想:真相只有一个,在权限弹框的时候,再一次实例了当前的activity,前面的activity处于不可见状态当然也就不走回调了。而且按下返回键产生的奇怪现象也有了合理的解释,activity是被finish了,只不过是新生成的activity,我们还有一个被覆盖的出来了,造成activity没有被finish的错觉。同时由于获得焦点,回调也开始走了。
验证猜想:不让多次实例activity,将activity改成单例模式。实验结果:仍然多次弹框但是会走回调函数。猜想验证通过。由此产生的联想:在小米中获取权限要在SplashActivity进入之后,这样才能通过小米的测试并且比较顺利的上架的原因也是这个。
那么接下来应该怎么办?喊雷军改bug?
网友评论