安装完APP后,点击“打开”按钮,打开APP。回到桌面,点击桌面icon打开APP,出现多个app实例

Posted 薛瑄

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安装完APP后,点击“打开”按钮,打开APP。回到桌面,点击桌面icon打开APP,出现多个app实例相关的知识,希望对你有一定的参考价值。

问题

安装完APP后,点击“打开”按钮,打开APP。回到桌面,点击桌面icon打开APP,出现多个app实例

How to prevent multiple instances of an Activity when it is launched with different Intents

原因

桌面启动app和安装器启动app的Intent不一样,安装完直接点击“打开”app,但是桌面点击图标认为没有启动了app,于是重启。导致出现了多个app实例

解决:

androidManifest.xml 中的主Activity,也就是有这个过滤的<action android:name="android.intent.action.MAIN"/> 的Activity onCreate()中加入 一下代码,进行判断

if (!this.isTaskRoot())  
       //判断当前Activity是不是根Activity,false也就是说是被系统重新实例化出来
       //如果你就放在launcher Activity中话,这里可以直接return了
       Intent mainIntent = getIntent();
       String action = mainIntent.getAction();
       if (mainIntent.hasCategory(Intent.CATEGORY_LAUNCHER) && action.equals(Intent.ACTION_MAIN)) 
              finish();
              return;//finish()之后该活动会继续执行后面的代码,加return避免可能的exception
       

PS:这个问题好久之前解决的,今天看到这段代码,有点遗忘,所以做个记录。于是想着去Google一下资料,看看大家怎么解决的,这个问题感觉不太好描述,于是使用答案去搜,果然stackoverflow 什么都有

How to prevent multiple instances of an Activity when it is launched with different Intents

以上是关于安装完APP后,点击“打开”按钮,打开APP。回到桌面,点击桌面icon打开APP,出现多个app实例的主要内容,如果未能解决你的问题,请参考以下文章

Android Bug分析系列:第三方平台安装app启动后,home键回到桌面后点击app启动时会再次启动入口类bug的原因剖析

前端js 怎么判断用户是不是安装了某APP,安装了不直接打开这个应用而是进行其他操作

国外软件app用啥加速器 好用的海外加速器推荐

移动网页点击打开app中,有这样的代码就可以实现唤醒原生app

App Store 已上架项目打开瞬闪问题

微信浏览器中点击下载App,如何出现选择外置浏览器的浮层