Activity管理栈工具类

1、工具类

/**
 * Activity管理栈 保存activity的实例,当程序退出时情况activity
 *
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */
public class ActivityStack {

    //栈对象,用于存放Activity对象,以便于管理

    private Stack<Activity> mStack;

 
    /**
     * 弹出Activity
     * 结束指定的类名activity
     *
     * @param activity
     * @see [类、类#方法、类#成员]
     */
    public void removeActivity(Activity activity) {
        if (activity != null) {
            mStack.remove(activity);
            activity.finish();
        }

    }


    /**
     * Activity入栈
     *
     * @param activity
     */
    public void addActivity(Activity activity) {
        if (mStack == null) {
            mStack = new Stack<>();
            if (!mStack.contains(activity)) {
                mStack.add(activity);
            }
        }
    }

    /**
     * 清空所有Activity栈类似App退出
     */
    public void removeAllActivity() {
        while (mStack != null && mStack.size() > 0) {
            Activity activity = currentActivity();
            if (activity != null) {
                removeActivity(activity);
            }
        }
        System.exit(0);
    }

    /**
     * 获取栈顶的Activity
     *
     * @return
     * @see [类、类#方法、类#成员]
     */
    public Activity currentActivity() {
        if (!mStack.isEmpty()) {
            // 该方法Returns the last element in this vector.也就是说栈顶的
            return (Activity) mStack.lastElement();
        } else {
            return null;
        }
    }

}

2、在BaseActivity中创建该对象

public  class BaseActivity extends AppCompatActivity  {
    
    public  ActivityStack mActivityStack;
   

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getApplicationComponent().inject(this);
        if (mActivityStack == null) {
            mActivityStack = new ActivityStack();//单例模式
        }
        mActivityStack.addActivity(this);
    }

   
    
}

猜你喜欢

转载自blog.csdn.net/Hunter2916/article/details/82797584
今日推荐