Activity回退研究

最近项目中实现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打开

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值