Android Activity栈管理 制定关闭某一个Activity,关闭所有Activity

系统Api :打开新的Activity 关闭之前所有Activity

Intent intent = new Intent(this, LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

自己管理: 将Activity放入集合进行管理

/**  
 * Activity管理类  
 *   
 */    
public class AppManager {    
    
    private static Stack activityStack;    
    
    private static AppManager instance;    
    
    private AppManager() {    
    }    
    
    /**  
     * 单一实例  
     */    
    public static AppManager getAppManager() {    
        if (instance == null) {    
            instance = new AppManager();    
        }    
        return instance;    
    }    
    
    /**  
     * 添加Activity到堆栈  
     */    
    public void addActivity(Activity activity) {    
        if (activityStack == null) {    
            activityStack = new Stack();    
        }    
        activityStack.add(activity);    
    }    
    
    /**  
     * 获取当前Activity(堆栈中最后一个压入的)  
     */    
    public Activity currentActivity() {    
        Activity activity = activityStack.lastElement();    
        return activity;    
    }    
    
    /**  
     * 结束当前Activity(堆栈中最后一个压入的)  
     */    
    public void finishActivity() {    
        Activity activity = activityStack.lastElement();    
        finishActivity(activity);    
    }    
    
    /**  
     * 结束指定的Activity  
     */    
    public void finishActivity(Activity activity) {    
        if (activity != null) {    
            activityStack.remove(activity);    
            activity.finish();    
            activity = null;    
        }    
    }    
    
    /**  
     * 结束指定类名的Activity  
     */    
    public void finishActivity(Class cls) {    
        for (Activity activity : activityStack) {    
            if (activity.getClass().equals(cls)) {    
                finishActivity(activity);    
            }    
        }    
    }    
    
    /**  
     * 结束所有Activity  
     */    
    public void finishAllActivity() {    
        for (int i = 0, size = activityStack.size(); i < size; i++) {    
            if (null != activityStack.get(i)) {    
                activityStack.get(i).finish();    
            }    
        }    
        activityStack.clear();    
    }    
    
    /**  
     * 退出应用程序  
     */    
    @SuppressWarnings("deprecation")    
    public void AppExit(Context context) {    
        try {    
            finishAllActivity();    
            ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);    
            activityManager.restartPackage(context.getPackageName());    
            System.exit(0);    
        } catch (Exception e) {    
            e.printStackTrace();    
        }    
    }    
} 


你可能感兴趣的:(Android)