1.编写工具类
该工具类用来将Activity添加到Activity栈中,实现退出时的统一退出
package com.yyh.utils;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
public class ActivityUtil {
//静态Activity集合
private static List<Activity> allActs = new ArrayList<Activity>();
//添加方法
public static void recordActs(Activity act) {
if (!allActs.contains(act))
allActs.add(act);
}
//关闭方法
public static void exit() {
for (int i = 0; i < allActs.size(); i++) {
allActs.get(i).finish();
}
}
}
2.记录当前App中开启的Activity
ActivityUtil.recordActs(this);
在所有的Activity中调用ActivityUtil中的recordActs(Activity act)方法
3.实现onKeydown方法
在需要实现再按一次退出系统的Activity实现onKeyDown(int keyCode,KeyEvent keyEvent)
如下:
package com.yyh.main;
import com.yyh.utils.ActivityUtil;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.Toast;
public class ActMain extends Activity {
Button dataCollection,manageData;
private long mExitTime=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.act_main);
//该方法必须在所有activity中都调用一次,用来记录App开启的Activity,以便统一结束
ActivityUtil.recordActs(this);
}
//实现onkeyDown方法
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode==KeyEvent.KEYCODE_BACK) {
if (System.currentTimeMillis()-mExitTime>2000) {
Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
mExitTime = System.currentTimeMillis();// 更新mExitTime
}else {
ActivityUtil.exit();
}
return true;//退出方法,即不执行下面的return super.onKeyDown(keyCode,Event)
}
return super.onKeyDown(keyCode, event);
}
}
本文中的退出系统的方法存在内存溢出的可能,所以不建议使用,如有需要更妥当的退出系统方法请看如下链接:
http://blog.csdn.net/yyh2503787656/article/details/52765188