栈堆对于Activity的管理

package com.exam.utils;

import android.app.ActivityManager;
import android.content.Context;

import android.support.v7.app.AppCompatActivity;

import java.util.Stack;

/**
 * Created by 11291 on 2017/7/18.
 */

public class AppManager {
    //定义栈堆,并且初始化
    private static Stack<AppCompatActivity> stack = new Stack<>();
    //定义静态方法
    private static AppManager appManager;

    //定义私有构造方法
    private AppManager() {
    }

    public static AppManager getInstance() {//单例模式
        if (appManager == null) {
            appManager = new AppManager();

        }
        return appManager;
    }

    //添加一个Activity到栈堆
    public void addActivity(AppCompatActivity activity) {
        stack.add(activity);
    }

    //获取当前栈堆最后一个Activity
    public AppCompatActivity getActivity() {
        return stack.lastElement();
    }

    //结束当前Activity
    public void removeCurrentActivity() {
        stack.remove(stack.lastElement());
    }

    //结束指定的Activity
    public void removeActivity(AppCompatActivity activity) {
        stack.remove(activity);//从栈堆移除
        activity.finish();//结束此Activity
    }

    //结束指定类名的Activity
    public void removeActivity(Class<?> clazz) {
        //遍历栈堆
        for (AppCompatActivity activity : stack) {
            if (activity.getClass().equals(clazz)) {
                removeActivity(activity);
            }
        }
    }

    public void removeAllActivity() {
        for (AppCompatActivity activity : stack) {
            removeActivity(activity);
        }
    }

    public void exitApp(Context context) {
        removeAllActivity();
        ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
        manager.restartPackage(context.getPackageName());
        System.exit(0);
    }


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值