背景
  • app有一个启动页面MainActivity,还有其他的页面OtherActivity(是通过启动页中按钮点击跳转过来的)
  • MainActivity的启动模式为android:launchMode="singleTask"

AndroidManifest.xml文件:

<applicationandroid:name=".MyApplication"android:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/AppTheme"><activityandroid:name=".MainActivity"android:launchMode="singleTask"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><activity android:name=".OtherActivity" />
流程
  • 运行app
  • 进入启动页MainActivity
  • 点击按钮启动OtherActivity
  • 按HOME键回到桌面
  • 点击app图标启动

理想的结果是启动app之后界面停留在OtherActivity界面,但是实际上还会重新进入启动界面MainActivity。像一些存在登录界面为启动页面的app,就会出现只要按HOME键就需要重新到登录界面,体验不是很友好。

原因

首先排除系统杀死app进程的原因,因为按HOME键之后通过进程按键是可以启动app,并且还原到按HOME键时的界面。

Android Studio运行启动app的Intent(包含第三方启动应用)和点击app图标启动的Intent内容是不一样的。

解决方案

第一种:
在启动页的onCreate()方法中setContentView之前添加如下代码:

if (null != intent && intent.flags and Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT != 0) {finish()return
}

有些手机设备上第一种方案可能会无效。

第二种:

if (!this.isTaskRoot) { // 判断当前activity是不是所在任务栈的根if (intent != null) {if (intent.hasCategory(Intent.CATEGORY_LAUNCHER) && Intent.ACTION_MAIN == intent.action) {finish()return}}
}
参考文档

中文 中文2
英文 英文2

Android Studio运行app,按HOME键回到桌面,再次点击app图标启动再次打开启动页面解决方案相关推荐

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

    前言 前些天,测试MM发现了一个比较奇怪的bug. 具体表现是: 1.将app包通过电脑QQ传送到手机QQ上面,点击安装,安装后选择打开app (此间的应用逻辑应该是要触发 [闪屏页Activity] ...

  2. android studio运行APP到手机

    android studio运行APP到手机 一.数据线连接手机调试 1.打开android手机的开发者模式(机型不一样,打开方式不一样,具体可百度) 2.用数据线把电脑和手机连起来(最好用原装数据线 ...

  3. Android Studio运行app启动模拟器一直卡在“Wating for target device to come online”解决方法

    Android Studio运行app启动模拟器一直卡在"Wating for target device to come online"的情况如何解决 在启动模拟器如果一直卡在& ...

  4. Android Studio 运行HyperLPR开源项目安卓APP

    Android Studio 运行HyperLPR开源项目安卓APP 前提:已安装Android Studio 作为一个安卓小白,我学uni-app只是机缘巧合,只是想看看微信小程序怎么开发的,然后一 ...

  5. 小米5 android studio,Android应用开发android studio运行app,使用模拟器可以,用小米5手机安装失败...

    本文将带你了解Android应用开发android studio运行app,使用模拟器可以,用小米5手机安装失败,希望本文对大家学Android有所帮助. < 报错 Session 'app': ...

  6. android 置灰不可点击,Android Studio 运行按钮灰色的完美解决方法

    Android Studio 运行按钮灰色的完美解决方法 今天新建项目的时候突然发现编译后运行按钮为灰色. 解决方案:第一步:点击图中的Add Configuration,出来如下界面 第二步:点+号 ...

  7. Android studio运行出现Unable to determine application id: com.android.tools.idea.run.ApkProvisionExcepti

    Android studio运行出现Unable to determine application id: com.android.tools.idea.run.ApkProvisionExcepti ...

  8. Android Studio 运行项目报错:org.objectweb.asm.tree.analysis.AnalyzerException: Execution can fall off

    Android Studio项目,公司主要的一个APP项目,还算庞大,有段时间没过问该项目,有需求要改,又来关注这项目代码,update代码到最新,android studio运行项目,就是run不起 ...

  9. android o 编译及运行,【转】实践最有效的提高Android Studio运行、编译速度方案

    原文:https://blog.csdn.net/xwh_1230/article/details/60961723 实践最有效的提高Android Studio运行.编译速度方案 最有效提升Andr ...

最新文章

  1. 提高 服务器 内存 利用率_怎样提高AI服务器的利用率
  2. android 开发时遇到的环境问题3--eclipse整个项目工程报错
  3. SQL 无限级分类语句
  4. sklearn使用日志(part1)--特征消除术Recursive feature elimination
  5. openfire消息通知推送_微信小游戏内测「订阅消息」能力,这是召回用户的「大杀器」吗?...
  6. 服务器系统报错kernel-power,第十二讲、Linux服务器操作系统1.ppt
  7. bootstrap 页面分成三列_20分钟成功编写bootstrap响应式页面 就这么简单
  8. CodeForces Contest #1114: Round #538 (Div. 2)
  9. mysql主从配置,innobackup备份
  10. Linux下载 安装cadenceIC617
  11. php变形的itf条码,itf14条码生成器 第14章生成器.doc
  12. springMVC实现json 返回到页面
  13. Java内存泄漏分析系列之七:使用MAT的Histogram和Dominator Tree定位溢出源
  14. 什么软件适合团队协作?团队协作工具排行
  15. Crontab定时执行任务
  16. 011 数据恢复(原理)
  17. 能ping通服务器但是打不开网页,[问题]能ping通网络,但是打不开页面
  18. Python《机器学习实战》读书笔记(三)——决策树
  19. php后门检测工具,phpStudy后门如何检测和修复
  20. 怎么去掉index.php,怎么去掉后面的bbs/index.php

热门文章

  1. IT运维管理系统软件怎么选择
  2. 互联网起源之无线通信
  3. python动态粒子素材,Python 技术篇-3行代码实现Gif动画生成,Gif动画素材获取方法...
  4. fabs和abs的区别
  5. IP地址、子网掩码、网关地址、DNS相关知识
  6. bower到底是啥?
  7. 游戏物理数学之《四元数Quaternion》
  8. 新睿云科普:raid1是什么?特点以及工作方式和优缺点
  9. centos rpmforge repo
  10. 网络自动打铃【一】——客户端