pythoncat1024/blog

android Activity Intent.FLAG_ACTIVITY_CLEAR_TOP 与 Intent.FLAG_ACTIVITY_SINGLE_TOP 结合导致的闪屏

Opened this issue · 1 comments

android Activity Intent.FLAG_ACTIVITY_CLEAR_TOP 与 Intent.FLAG_ACTIVITY_SINGLE_TOP 结合导致的闪屏

一段很普通的代码:

Intent intent = new Intent(this, A.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); // #闪一下黑屏

startActivity(intent);

说一下调用背景:桌面点击启动A,然后在A里面点击按钮启动了B,在B里面按返回键,调用了上面的代码。在清单文件里面,A,B都没有配置启动模式。(也就是都是默认标准启动模式)

先不管这种操作是否合理。目前遇到的问题就是这样操作,在华为手机,Android版本为9.0的机型上面,全部出现了大概率闪屏。(伴随着黑屏)

实话说,我并不清楚为什么这样会出现闪屏。但是,我去掉了 Intent.FLAG_ACTIVITY_SINGLE_TOP之后就不会闪屏了。

然后,我也不清楚,为什么去掉之后就好了。

答案应该在 startActivity(intent); 的源码里面了...

后续,然后刚好有一天打酱油的时候,我特意去翻看了 com.android.server.am.ActivityStarter 不过这个源码真的超级长,而且还关联其他的源码。。。。总之一句话就是,没看出结果来。