单例模式Activity管理的使用,以及volatile的作用

我现在也是开始边学习边谢谢博客记录知识的点滴,好记性不如烂笔头,我觉得记录下来有利于加强我的记忆。

1、volatile修饰的变量,有原子级的特征 例如 a=b+c; 此时a 算是原子级的,如果是a=a+1,则此时的volatile修饰的变量是无效的。

     在Java内存模型中,有main memory,每个线程也有自己的memory (例如寄存器)。为了性能,一个线程会在自己的memory中
保持要访问的变量的副本。这样就会出现同一个变量在某个瞬间,在一个线程的memory中的值可能与另外一个线程memory中的值,
或者main memory中的值不一致的情况。
来源:http://blog.csdn.net/orzorz/article/details/4319055
//这个是activity管理类,在baseActivity中进行管理,可方便操作
public class ActivityManager {
    //volatile 修饰只能是主内存存在,其他线程访问的临时变量也都跟这个一样
    private static volatile ActivityManager instance;
//java中stack的使用方法,堆栈是一种"后进先出"(LIFO)的数据结构,只能在一端进行插入(称为"压栈")或删除(称为"出栈")数据的操作.
    private Stack<Activity> mActivityStack = new Stack<Activity>();

    private ActivityManager() {
    }

    public static ActivityManager getInstance() {
        if (instance == null) {
            synchronized (ActivityManager.class) {
                if (instance == null) {
                    instance = new ActivityManager();
                }
            }
        }
        return instance;
    }

    public void addActicity(Activity act) {
        mActivityStack.push(act);
    }

    public void removeActivity(Activity act) {
        mActivityStack.remove(act);
    }

    public void killMyProcess() {
        int nCount = mActivityStack.size();
        for (int i = nCount - 1; i >= 0; i--) {
            Activity activity = mActivityStack.get(i);
            activity.finish();
        }

        mActivityStack.clear();
        android.os.Process.killProcess(android.os.Process.myPid());
    }
}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值