在Android开发中,设置Activity跳转的出入场动画时,为了解决跳转闪黑屏问题,总会增加android:windowIsTranslucent=true属性,但目前这个属性在Android10上存在以下问题。
一、问题背景:
在Android10中,假定三个Activity:A、B、C,B设置android:windowIsTranslucent=true,在A的onResume中finish掉B和C
二、问题现象:
从A->B->C返回键到B 再B->C,会直接回到A
三、问题原因:
在第二次进入C之后,会回调A的onResume
四、排查过程:
1.查看日志,并未发现有崩溃,看到有onDestroy的打印,且有activity正常切换出场动画,认为是正常finish,排除crash
2.查看activity C代码的逻辑,发现并未有主动finish的情况
3.排查代码中启动activity A的情况,加断点调试,并没有主动去打开activity A,但发现会进入到activity A的onResume回调
4.排查版本,发现是由某一版本引发,查看代码提交记录,排查提交内容,在删除掉android:windowIsTranslucent=true后,问题消失,初步确认是由该属性引起。
5.自己写demo验证,再次确认是由此问题引起
6.确认多个厂商的手机,基本可以确认为Android10的共性问题
五、问题解决:
1.规避:去掉android:windowIsTranslucent=true属性,优化动画
六、问题根因:
目前没有排查Android10在这个版本上更改了什么内容,待后续补充或者有其他了解的同学请留言