在程序中,实现随时随地退出程序 或者 快速点击两次返回退出程序
新建一个ActivityCollector , 将所有的Activity加入List集合;加入添加Activity、移除Activity 与 结束所有Activity的方法;
如需要在Activity中退出程序,直接在onDestory方法中,加入
ActivityCollector.
removeActivity
(
this
)
点击两次back退出程序:
重写onKeyDown方法,在方法中
调用
ActivityCollector.
finishingAll()方法即可
代码如下:
public static
List<Activity>
activities
=
new
ArrayList<>()
;
public static void
addActivity
(Activity activity){
activities
.add(activity)
;
}
public static void
removeActivity
(Activity activity){
activities
.remove(activity)
;
}
public static void
finishAll
(){
for
(Activity activity:
activities
){
if
(!activity.isFinishing()){
activity.finish()
;
}
}
}
代码如下:
@Override
protected void
onDestroy
() {
super
.onDestroy()
;
ActivityCollector.
removeActivity
(
this
)
;
}
另一种方式比较常见:
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(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
} else {
finish();
System.exit(0);
}
return true;
}
return super.onKeyDown(keyCode, event);
}
直接放在你要连续两次返回退出程序的 Activity即可。