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);

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

被折叠的 条评论
为什么被折叠?



