1、先创建Activity管理器ActivityManager
package com.sifang.dispatch.control;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
public class ActivityManager {
private static ActivityManager mActivityManager;
private List<Activity> activitys = new ArrayList<Activity>();
private ActivityManager(){}
public synchronized static ActivityManager getInstance() {
if(mActivityManager == null)
mActivityManager = new ActivityManager();
return mActivityManager;
}
/**
* 在Activity onCreate时调用
* @param activity
*/
public void addActivity(Activity activity) {
if(activitys == null)
activitys = new ArrayList<Activity>();
activitys.add(activity);
}
/**
* 在Activity onDestroy的时候可以调用
* @param activity
*/
public void removeActivity(Activity activity) {
if(activitys == null)
activitys = new ArrayList<Activity>();
activitys.remove(activity);
}
/**
* 退出
*/
public void exit() {
if(activitys != null) {
for (int i = 0; i < activitys.size(); i++) {
Activity activity = activitys.get(i);
if(activity != null && !activity.isFinishing())
activity.finish();
}
}
}
}
2、在MainActivity向Activity管理器中添加Activity
package com.sifang.dispatch.activity;
import com.sifang.dispatch.control.ActivityManager;
import android.R;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActivityManager.getInstance().addActivity(this);
}
@Override
protected void onDestroy() {
// 如果需要可以在这里移除Activity管理器中的Activity对象
// ActivityManager.getInstance().exit();
super.onDestroy();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
exit();
return false;
} else {
return super.onKeyDown(keyCode, event);
}
}
//记录下按下返回键的时间
private long lastTime = 0;
public void exit() {
//当前按下返回键的时间
long currentTime = System.currentTimeMillis();
if (currentTime - lastTime > 2000) {
Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show();
lastTime = currentTime;
} else {
ActivityManager.getInstance().exit();
}
}
}