你可能先要看这篇文章
https://juejin.im/post/5935081d2f301e006b09cb9e
简单基础
- Activity 是放在栈中,遵循后进先出原则
- Activity 有4种启动模式,其中只有 singleTask (栈内复用)模式下, taskAffinity 才会生效
- taskAffinity 是指你这个 Activity 要放在哪个栈中,相当于指定栈的名字
问题分析
回到你这里的结果,我基本能猜测到 这个 Activity 只会是下面几种情况的组合,不会有更多了,(否则就不会是有两个栈)
- standard
- singleTask 并且没有指定Android:taskAffinity
- singleTask 并且指定了Android:taskAffinity的值,但值不是”“
- singleInstance
考虑到广告Activity是类单例模式,所以基本不会是standard,那么剩下的可能就只是2,3,4了
然后在看楼上的做法,并且能解决掉你的问题,那么就 4 也可能排除掉,否则在4的情况下,这个做法是不能解决这个问题的
那么,这个广告 Activity 就只能2或者3的配置
解决方案分析
在上面分析之后,在来分析下为什么解决方案是正确的
因为这么改动之后,表示 AppActivity 所在的栈就是默认的栈名(一般就是包名,不用在意这个名字),那么在此之上,你这个广告 Activity 基本就是上述2的情况,然后才会是 ”解决“ 了,否则,如果是3的情况,那么问题依旧存在