android:windowIsTranslucent &分享回调 引发的血案

背景:

遇到一个线上用户反馈 case,用户在分享成功之后回调,我们的回调弹窗闪烁多次,无法继续操作,部分机型出现

case跟踪:

针对用户情况,用华为荣耀9.0系统复现。发生场景是,用户在签到中心做任务领取奖励,分享回调页面无法正常展示,有很严重体验问题,而且是少部分机型出现。在 debug 环境逐步跟踪发现,原来是activity 的 style 中的android:windowIsTranslucent 属性导致问题。

复现场景是:需要进行分享调起三方 app,分享回调之后,弹起 dialog 就会出现。

原因:

部分高版本手机在用 activity 模拟的 dialog 样式情况下(android:windowIsTranslucent 主要用户控制弹窗透明,否则用 activity 模拟就没有意义),跳出 app,有 startActivityForResult 之后,会有dialog 弹出失败的问题,其实本质上也不是弹出失败,这个模拟的 dialog 应该是正常弹出了,怀疑是窗体被全部设置透明了,将android:windowIsTranslucent就不会出问题。 或者不走分享,直接调起这个摸你的 dialog 也不会有问题。所以正常情况下,android:windowIsTranslucent和分享回调不同时使用都不会出现问题,极限情况下,就悲剧了!而且是部分高版本手机会出现。  更深层次的原因还有待跟踪....

解决方案:

还是用正常的 dialog 去实现,不要用 activity 去模拟 dialog 了,说不好就遇到类似坑。

 

 

你可能感兴趣的:(Android)