最近项目中实现Activity跳转多个Activity后回退N个Activity,新建Activity的跳转的话,会有Activity残留,不利于回退操作的实现,过多的Activity会造成回退混乱,在网上参考了完全退出app的实现方法,结合LinkedList的特性,实现了顺序回退N个Activity的操作,具体参考了http://yuanzhifei89.iteye.com/blog/1009139,关键代码实现如下:
public class ActivityUtils {
private static final LinkedList<Activity> sActivityList = new LinkedList<Activity>();
private static boolean sProcessKilled = true;
public static boolean isProcessKilled() {
return sProcessKilled;
}
public static void setProcessStarted() {
sProcessKilled = false;
}
/***
* 在每个Activity的onCreate中调用,用来记录打开了的activity
*/
public static void addActivity(Activity act) {
//利用LinkedList的特性实现先进后出的堆栈存储特性
sActivityList.addFirst(act);
}
/***
* 在每个Activity的onDestroy中调用
*/
public static void removeActivity(Activity act) {
sActivityList.remove(act);
}
/***
* 结束所有的activity,并关闭程序的进程
*/
public static void exit() {
finishAll();
System.exit(0);
}
/***
* 结束所有的activity,但不会关闭程序的进程
*/
public static void finishAll() {
for (Activity act : sActivityList) {
act.finish();
}
sActivityList.clear();
}
/**
* 按先进后出顺序结束num个activity
* @param num
*/
public static void finishActivitys(int num){
for (int i = 0; i < num; i++) {
Activity act = sActivityList.removeFirst();
act.finish();
}
}
private ActivityUtils() {} // no instance
}
如果需要先进先出的话,只要把addActivity()方法改为sActivityList.addLast(act)即可
初学android,偶有所得,抛砖引玉,欢迎高手指正,附上项目例子下载
PS:本人不喜欢用积分下载,己所不欲勿施于人,大家可以把上面那张打不开的图片下载后改后缀为.rar打开