Android 应用在后台时,跳转 Activity 会自动切换应用至前台

本文探讨Android 4.4后的新特性,即应用在后台启动Activity时,如何避免自动切换到前台。提出了两种解决方案:1) 在当前Activity判断应用状态,根据前后台状态决定是否跳转;2) 在目标Activity调用moveTaskToBack()使其在后台运行。同时分析了不同场景下Activity的生命周期变化和可能遇到的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本博客 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 = 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值