网络上搜罗了很多资料,但都不能达到效果,今天我找到了一个不错的方法,试验成功!
模拟一个activity栈:
Java代码
package info.wegosoft.android.util;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
/**
* Filename: ActivityStackControlUtil.java
* Package: info.wegosoft.android.util
* Description: activity栈管理类,每当新产生一个activity时就加入,finish掉一个activity时就remove,这样到最后需要
* 完全退出程序时就只要调用finishProgram方法就可以将程序完全结束。
* Copyright: Copyright (c) wegosoft.info 2011
* @author: 李辉
* email: fzlihui@gmail.com
* @version: 1.0
* Create at: 2011-8-8 下午05:15:51
*/
public class ActivityStackControlUtil {
private static List<Activity> activityList = new ArrayList<Activity>();
public static void remove(Activity activity){
activityList.remove(activity);
}
public static void add(Activity activity){
activityList.add(activity);
}
public static void finishProgram() {
for (Activity activity : activityList) {
activity.finish();
}
android.os.Process.killProcess(android.os.Process.myPid());
}
}
在每一个activity的onCreate()中加上一句:
Java代码
ActivityStackControlUtil.add(this);
在每一个activity的onDestroy()中加上一句,这个方法保证activity在finish的时候移除自定义的list:
Java代码
protected void onDestroy() {
super.onDestroy();
//移出管理栈
ActivityStackControlUtil.remove(this);
}
最后在要完全退出程序的地方调用:
Java代码
ActivityStackControlUtil.finishProgram();
本来打算写成一个BaseActivity,然后所有activity都继承它,但是有的activity要继承ListActivity,Java不支持多重继承,只好作罢。这样就只能每个activity都写几句重复代码了。