Android 再次打开APP进入按Home键退出时的界面(thisTaskRoot)
问题
Android 设置页面的启动模式为 singletask 之后,当按Home 退出时,再重新打开应用,还会进入首启动页。就会造成一些应用需要重新登录,当前页数据丢失等问题
解决
去除启动页的 singletask 的启动模式(AndroidManifest.xml)
在启动页activity添加如下代码
// 避免从桌面启动程序后,会重新实例化入口类的activity
if (!this.isTaskRoot()) { // 判断当前activity是不是所在任务栈的根
Intent intent = getIntent();
if (intent != null) {
String action = intent.getAction();
if (intent.hasCategory(Intent.CATEGORY_LAUNCHER) && Intent.ACTION_MAIN.equals(action)) {
finish();
return;
}
}
}
分析
虽然我们解决了问题,但我们也要分析解决问题的思路。
哈哈哈,可能你说思路就是百度,别人这样写,反正我用了也成功了。(but 我们要往优秀程序员的方向发展)
第一步(看代码进行了什么处理)
第二行: this.isTaskRoot() 判断是否是activity栈 最下方一个
第三行:getIntent() 获取该上一个页面传过来的intent的信息。因为在启动页中,我们会设置
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
第六行:判断是否通过启动页启动,也有可能是代码中的需求跳转,这种情况不能把页面销毁了。
第七行:销毁当前启动页
【思考】那么为什么如果是外部启动的就 finish 呢?
第二步(看看别人怎么说)
参考1:https://www.jianshu.com/p/eea14ca0b164
      
   
Android 再次打开APP进入按Home键退出时的界面(thisTaskRoot)的更多相关文章
- Android 网页打开app(或者打开指定页面)并且接收参数
		
网页打开app 现实描述场景: 1.短信通知中通知内容,比如信息中一个咨询详情,流程步骤,信息中的地址打开的是一个网页,网页打开就指定app或者app中的指定页面 html代码 <html> ...
 - Android Toast  提示按两次返回键退出
		
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceS ...
 - Android 编程下 Activity 的创建和应用退出时的销毁
		
为了确保对应用中 Activity 的创建和销毁状态进行控制,所以就需要一个全局的变量来记录和销毁这些 Activity.这里的大概思路是写一个类继承 Application,并使获取该 Applic ...
 - 解决app安装成功后,直接点击“打开”再按home返回,再次打开app会重新启动的问题
		
在主activity的onCreate中加入以下代码 @Override protected void onCreate(Bundle savedInstanceState) { super.onCr ...
 - 【转】Android实现点击两次返回键退出
		
在做安卓应用是我们经常要判断用户对返回键的操作,一般为了防止误操作都是在用户连续按下两次返回键的时候提示用户是否退出应用程序. 第一种实现的基本原理就是,当按下BACK键时,会被onKeyDown捕获 ...
 - Android实现两次按下返回键退出
		
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_BAC ...
 - Fragment放置后台很久(Home键退出很长时间),返回时出现Fragment重叠解决方案
		
后来在google查到相关资料,原因是:当Fragment长久不使用,系统进行回收,FragmentActivity调用onSaveInstanceState保存Fragment对象.很长时间后,再次 ...
 - Android按下home键后重新打开app进入主activity的问题
		
问题阐述: 当我们写一款App的时候,势必会有这种情况:用户已经进行了多级的操作,现返回栈中已存在多个activity,那么这个时候我们想回到最初的activity难道要一层层的返回吗,对用户来说 无 ...
 - Android应用安全开发之浅谈网页打开APP
		
一.网页打开APP简介 Android有一个特性,可以通过点击网页内的某个链接打开APP,或者在其他APP中通过点击某个链接打开另外一个APP(AppLink),一些用户量比较大的APP,已经通过发布 ...
 
随机推荐
- 原生JS的移入溢出控制div的显示与隐藏
			
原生JS的移入溢出控制div的显示与隐藏的写法 上面的写法火狐存在兼容性
 - React躬行记(14)——测试框架
			
测试不仅可以发现和预防问题,还能降低风险.减少企业损失.在React中,涌现了多种测试框架,本节会对其中的Jest和Enzyme做详细的讲解. 一.Jest Jest是由Facebook开源的一个测试 ...
 - Java 添加Word形状或图形
			
本文将介绍通过java编程在Word文档中添加形状(图形),包括添加单个图形.组合图形,以及格式化图形样式,如设置形状填充色.大小.位置.边框样式.边框颜色.边框粗细.图形旋转角度.图形文本环绕方式等 ...
 - MySQL 库、表、记录、相关操作(2)
			
库.表.记录.相关操作(2) 字段操作 create table tf1( id int primary key auto_increment, x int, y int ); # 修改 alter ...
 - 【BZOJ4001】【Luogu P3978】 [TJOI2015]概率论
			
题目描述: Description: Input 输入一个正整数N,代表有根树的结点数 Output 输出这棵树期望的叶子节点数.要求误差小于1e-9 Sample Input 1 Sample Ou ...
 - 微信小程序实现,可滑动、可点击
			
tab.wxml: 全部 中奖 未中奖 全部 中奖 未中奖 tab.wxss: .swiper-tab { width: 100%; border-bottom: 2rpx solid #ccc; t ...
 - Android Activity生命周期及启动模式
			
曾经搞过许多东西,再熟练的东西一段时间没有碰都会生疏或忘记.后来体会到写成文档记录下来的重要性,但有些word或ppt记录下来的东西随着时间流逝会丢失,或者不愿去看.或许保存成博客的形式,会是更好的选 ...
 - UICollectionView 相关方法
			
最近闲来无事,整理一下UICollectionView的相关方法以备使用 UICollectionViewFlowLayout和UICollectionViewLayout UICollectionV ...
 - UESTC-1963咸鱼咕咕咕(二分图匹配)
			
咸鱼咕咕咕 Time Limit: 1000 MS Memory Limit: 64 MB Submit Status 咸鱼有个咕咕笼. 咕咕笼可以划分成m×nm×n个格子,每个小格子可以放下 ...
 - 智和网管平台国产化AIOps智能运维 建立自主可控网络安全体系
			
没有网络安全就没有国家安全,中国作为一个崛起中的大国,网络安全至关重要.新一届中央高度重视信息安全自主可控的发展,Gartner研究报告表明,2019年中国三分之二的数据中心.IT基础设施支出流向中国 ...