1、首先创建一个名为ScreenManager的类。
2、编写其代码,如下所列。
package wyf.ytl.utils;
import java.util.Stack;
import android.app.Activity;
public class ScreenManager {
private static Stack<Activity> activityStack;
private static ScreenManager instance;
private ScreenManager(){}
public static ScreenManager getScreenManager(){
if(instance == null){
instance = new ScreenManager();
}
return instance;
}
public void popActivity(){
Activity activity=activityStack.lastElement();
if(activity!=null){
activity.finish();
activity=null;
}
}
public void popActivity(Activity activity){
if(activity!=null){
activity.finish();
activityStack.remove(activity);
activity=null;
}
}
public Activity currentActivity(){
if(activityStack.size() == 0){
return null;
}
Activity activity = activityStack.lastElement();
return activity;
}
public void pushActivity(Activity activity){
if(activityStack==null){
activityStack=new Stack<Activity>();
}
activityStack.add(activity);
}
public void popAllActivityExceptOne(Class cls){
while(true){
Activity activity = currentActivity();
if(activity==null){
break;
}
if(activity.getClass().equals(cls) ){
break;
}
popActivity(activity);
}
}
public void exitApp(){
while(true){
Activity activity = currentActivity();
if(activity==null){
break;
}
popActivity(activity);
}
}
}
}
public void popAllActivityExceptOne(Class cls){
while(true){
Activity activity = currentActivity();
if(activity==null){
break;
}
if(activity.getClass().equals(cls) ){
break;
}
popActivity(activity);
}
}
public void exitApp(){
while(true){
Activity activity = currentActivity();
if(activity==null){
break;
}
popActivity(activity);
}
}
}
3、在每个Activity中的onCreate方法中调用自定义Activity栈中的pust方法,如下所示。
ScreenManager.getScreenManager().pushActivity(this);
4、重写所有Activity中的onKeyDown方法,拦截系统原有的返回键的处理,代码如下所示。
/**
* 拦截返回按键的方法
*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_BACK:// 返回键
Utils.showExitDialog(this);
break;
}
return false;
}
5、之后在需要退出应用程序时调用自定义Activity栈的退出方法即可。
ScreenManager.getScreenManager().exitApp();