本博客 demo 见:demo。
平常用手机的时候经常碰到这种情况,用首屏广告举个栗子~很多应用都会有首屏广告 activity A,假设此应用是 app C,如果此时要使用别的应用,就会使得 app C 在后台运行。可是当 activity A 的广告结束后自动跳转 activity B 的时候 app C 总是会自动跳出来切换到前台展示,挡住了我们正在使用的应用,体验非常不好。
这是 android 4.4 后修改的新特性。理想的体验应该是如果应用在后台启动 activity B,那 activity B 也应该同样保持在后台。也就是启动的 activity B 应该保持和启动前时应用的前后台状态一致,才不会影响用户的使用。
有 2 种方案:
1. 在当前 activity A 里处理
在跳转 activity B 前判断应用 C 是否在后台,如果应用 C 在后台,那么就不跳转,并标记变量 ifStartSecondActivity = true,等到应用 C 被切换到前台的时候,因为还没有跳转,所以相当于 activity A 重新在前台展示的时候,在 onResume() 里判断变量 ifStartSecondActivity == true 则执行 startActivity() 跳转至 B;如果应用 C 在前台,正常跳转即可。
判断应用是否在前台:
public boolean isAppOnForeground() {
ActivityManager activityManager =