Android 堆栈式管理Activity

来源:互联网 发布:c语言判断水仙花数程序 编辑:程序博客网 时间:2024/05/21 19:45
import android.app.Activity;import java.util.Stack;/** * Created on Android Studio. * User: Sunday * Time: 2016/12/22 16:01 * Email:  * TODO activity堆栈式管理 */public class AppManager {    private static Stack<Activity> activityStack;    public AppManager() {    }    /**     * 单一实例     */    public static AppManager getInstance() {        return SingleApp.INSTANCE;    }    public static class SingleApp {        public static AppManager INSTANCE = new AppManager();    }    /**     * 添加Activity到堆栈     */    public void addActivity(Activity activity) {        if (activityStack == null) {            activityStack = new Stack<Activity>();        }        activityStack.add(activity);    }    /**     * 移除Activity     */    public void removeActivity(Activity activity) {        activityStack.remove(activity);    }    /**     * 获取指定的Activity     */    public static Activity getActivity(Class<?> cls) {        if (activityStack != null)            for (Activity activity : activityStack) {                if (activity.getClass().equals(cls)) {                    return activity;                }            }        return null;    }    /**     * 获取当前显示Activity(堆栈中最后一个传入的activity)     */    public Activity getLastActivity() {        Activity activity = activityStack.lastElement();        return activity;    }    /**     * 获取所有Activity     */    public Stack<Activity> getAllActivityStacks() {        return activityStack;    }    /**     * 结束指定的Activity     */    public void finishActivity(Activity activity) {        if (activity != null) {            if (!activity.isFinishing()) {                activity.finish();                activityStack.remove(activity);            }        }    }    /**     * 结束指定类名的Activity     */    public void finishActivity(Class<?> cls) {        for (Activity activity : activityStack) {            if (activity.getClass().equals(cls)) {                finishActivity(activity);                break;            }        }    }    /**     * 结束除当前传入以外所有Activity     */    public void finishOthersActivity(Class<?> cls) {        if (activityStack != null)            for (Activity activity : activityStack) {                if (!activity.getClass().equals(cls)) {                    activity.finish();                }            }    }    /**     * 结束所有Activity     */    public void finishAllActivity() {        if (activityStack != null)            for (Activity activity : activityStack) {                activity.finish();            }        activityStack.clear();    }    /**     * 退出应用程序     */    public void AppExit() {        try {            finishAllActivity();            android.os.Process.killProcess(android.os.Process.myPid());// 杀死该应用进程            System.exit(0);        } catch (Exception e) {        }    }}示例二
package com.jh.rental.user.view;import android.app.Activity;import android.app.Application;import com.jh.rental.user.model.HttpVolley;import com.jh.rental.user.presenter.huanxin.HxChat;import com.jh.rental.user.utils.jason.BaseContext;import com.zhy.autolayout.config.AutoLayoutConifg;import java.util.Stack;/** * Created by 骏辉出行 on 2017/5/12. */public class BaseApplication extends Application {  public static   Stack<Activity>  activities=null;    @Override    public void onCreate() {        super.onCreate();        if (activities==null){               activities=new Stack<Activity>();        }        if (BaseContext.context==null){            BaseContext.context=BaseApplication.this.getApplicationContext();            HxChat.initContext(BaseContext.context);        }            }    public  static void finishActivity(){           activities.pop().finish();    }    public  static void addActivity(Activity context){                if (activities==null){                    activities=new Stack<>();                }                activities.push(context);    }    public static Activity currentActivity(){                return activities.lastElement();    }    public  static void exit(){        HttpVolley.getInstance().cancelPendingRequests();        if (activities==null){            return;        }        for (int i = 0; i <activities.size() ; i++) {             activities.get(i).finish();        }        activities=null;        System.exit(0);    }    public static void getMainActivity(){        if (activities==null){            return;        }        for (int i = activities.size()-1; i>1 ; i--) {            activities.pop().finish();        }    }    public static void getLoginActivity(){        if (activities==null){            return;        }        for (int i = activities.size()-1; i>0 ; i--) {            activities.pop().finish();        }    }}