java - viewpager里几个相同的fragment,他们的静态变量会共享吗?

查看:111
本文介绍了java - viewpager里几个相同的fragment,他们的静态变量会共享吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

mFragments.add(DrawFragment.newInstance(1));
mFragments.add(DrawFragment.newInstance(2));
mFragments.add(DrawFragment.newInstance(3));

DrawFragment中有个静态变量,如果在其中一个fragment中修改了它,其他fragment中的会变化吗?为什么?

解决方案

会发生变化。原因如下:

直白的回答:
静态变量跟类绑定,而你的Fragment实例是同一个类的实例,因此修改类的静态变量,所以类的其他实例都会发生变化。

复杂的回答:
JAVA将内存划分为:方法区、虚拟机栈,native方法栈,堆,程序计数器这五个部分。而静态变量属于类变量,分配在方法区上,为所有对象共享,共享一份内存,一旦静态变量被修改,其他对象均对修改可见,是线程非安全的。

这篇关于java - viewpager里几个相同的fragment,他们的静态变量会共享吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆