activity管理

/** 
 * 管理所有Activity 当启动一个Activity时,就将其保存到Stack中, 退出时,从Stack中删除 
 *  
 * @version v1.0 
 * @date 2013-7-30 
 */  
public class ActivityManager  
{  
    /** 
     * 保存所有Activity 
     */  
    private volatile Stack<Activity> activityStack = new Stack<Activity>();  
      
    private static volatile ActivityManager instance;  
      
    private ActivityManager()  
    {  
    }  
      
    /** 
     * 创建单例类,提供静态方法调用 
     *  
     * @return ActivityManager 
     */  
    public static ActivityManager getInstance()  
    {  
        if (instance == null)  
        {  
            instance = new ActivityManager();  
        }  
        return instance;  
    }  
      
    /** 
     * 退出Activity 
     *  
     * @param activity Activity 
     */  
    public void popActivity(Activity activity)  
    {  
        if (activity != null)  
        {  
            LogN.d(this, "popActivity: " + activity.getLocalClassName());  
            activityStack.remove(activity);  
        }  
    }  
      
    /** 
     * 获得当前栈顶的Activity 
     *  
     * @return Activity Activity 
     */  
    public Activity currentActivity()  
    {  
        Activity activity = null;  
        if (!activityStack.empty())  
        {  
            activity = activityStack.lastElement();  
        }  
        return activity;  
    }  
      
    /** 
     * 将当前Activity推入栈中 
     *  
     * @param activity Activity 
     */  
    public void pushActivity(Activity activity)  
    {  
        LogN.d(this, "pushActivity: " + activity.getLocalClassName());  
        activityStack.add(activity);  
    }  
      
    /** 
     * 退出栈中其他所有Activity 
     *  
     * @param cls Class 类名 
     */  
    @SuppressWarnings("rawtypes")  
    public void popOtherActivity(Class cls)  
    {  
        if(null == cls)  
        {  
            LogN.e(this, "cls is null");  
            return;  
        }  
          
        for(Activity activity : activityStack)  
        {  
            if (null == activity || activity.getClass().equals(cls))  
            {  
                continue;  
            }  
              
            activity.finish();  
        }  
        LogN.d(this, "activity num is : " + activityStack.size());  
    }  
      
    /** 
     * 退出栈中所有Activity 
     *  
     */  
    public void popAllActivity()  
    {  
        while (true)  
        {  
            Activity activity = currentActivity();  
            if (activity == null)  
            {  
                break;  
            }  
            activity.finish();  
            popActivity(activity);  
        }  
        LogN.d(this, "activity num is : " + activityStack.size());  
    }  
      
    public void startNextActivity(Class<?> activity)  
    {  
        Activity curActivity = currentActivity();  
        Intent intent = new Intent(curActivity, activity);  
        curActivity.startActivity(intent);  
        curActivity.overridePendingTransition(R.anim.push_right_in, R.anim.push_left_out);  
    }  
}  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值