问题记录-第一次安装apk后启动到主页面,点home键回到桌面,再点击应用图标,应用重新启动问题

本文详细解析了为何首次安装App后,从桌面重新进入不会直接返回主页面的原因,并提供了解决方案,通过在启动页Activity的onCreate方法中添加特定逻辑,确保再次点击图标时能直接切换到之前的状态。

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

问题:

      第一次安装app,打开、正常登录到主页面,这时候点击home键,返回到桌面,再点击应用icon,并没有按我们想的立马回到主页面。

原因:

  • 每次启动Intent导致新创建Task的时候,该Task会记录导致其创建的Intent;而如果后续需要有一个新的与创建Intent完全一致(完全一致定位为:启动类,action、category等等全部一样,不可多项也不可缺少),那么该Intent并不会触发Activity的新建启动,而只会将已经存在的对应Task移到前台;这也就是为什么桌面会在再次点击图标时将后台任务挪到前台而不是重新启动App的实现。
  • 第一次安装启动的Intent跟从桌面点击启动的Intent不是一个启动类(参考原因1),所以它会再次创建启动页,而不是回到之前的页面。

解决方案:

      在启动页Activity的onCreate()方法里添加如下逻辑:

// 避免从桌面启动程序后,会重新实例化入口类的activity
if (!this.isTaskRoot()) {
    Intent intent = getIntent();
    if (intent != null) {
        String action = intent.getAction();
        if (intent.hasCategory(Intent.CATEGORY_LAUNCHER) && Intent.ACTION_MAIN.equals(action)) {
            finish();
            return;
        }
    }
}

正常情况下,启动页(也叫闪屏页)如果是第一次启动是任务栈的根,一般启动完后就会finish掉,根Acitivity就变成了主页面,当按home键,再次从桌面图标点击进来是,启动页会走这段代码,然后finish掉当前页,后台切到前台,问题解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值