怎么退出整个应用,setFlags

本文介绍了如何在Android应用中实现点击和双击退出功能,包括使用onKeyDown方法监听按键事件,通过设置变量记录按键时间间隔来判断是否为双击操作,并在满足条件时退出应用。同时,文中还详细解释了如何在AndroidManifest.xml中设置Activity的launchMode属性以及Intent的setFlags和addFlags的区别,以避免重复启动和保持应用状态。

List<Activity>,每次添加到list里面,最后遍历关闭

广播,加入广播


//实现点击双击退出应用,测试有效果的/

private long exitTime = 0;

	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		if (keyCode == KeyEvent.KEYCODE_BACK) {// && event.getAction() ==
												// KeyEvent.ACTION_DOWN
			if ((System.currentTimeMillis() - exitTime) > 2000) {
				Toast.makeText(getApplicationContext(), "再按一次退出程序",
						Toast.LENGTH_SHORT).show();
				exitTime = System.currentTimeMillis();
			} else {
				//退出整个应用
				Intent intent = new Intent(Intent.ACTION_MAIN);
				intent.addCategory(Intent.CATEGORY_HOME);
				intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
				this.startActivity(intent);
				System.exit(0);
			}
			return true;
		}
		return super.onKeyDown(keyCode, event);
	}



已经打开了activity,不想再次打开,或者只是把栈提前

1. 在 AndroidManifest.xml 中设置 Target Activity 的属性,设置它的 launchMode关于 launchMode 的参数一共有 4 个:  

android:launchMode=["multiple"| "singleTop" | "singleTask" | "singleInstance"]  

具体可以查一些 reference ,这里我要说的是 singleTop 和 singleTask ,你用这些参数之前一点要明白 task 是什么意思。在这里我只希望有一个 activity 在堆栈里,不要反复创建,调用它时直接从堆栈里面取出置顶,所以我用 singleTop  

2. 在代码里对 Intent 进行设置: 这我想说的是 setFlags 和 addFlags 之间的区别,如果 setFlags 是可以改变原来 flag 设置, addFlags 如果原先有类似设置就不能被加入了

Intent intent = new Intent();
intent.setClass(getApplicationContext(), TargetActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值