为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕标5832272 2019-03-13 14:15:05
mFragments.add(DrawFragment.newInstance(1));mFragments.add(DrawFragment.newInstance(2));mFragments.add(DrawFragment.newInstance(3));DrawFragment中有个静态变量,如果在其中一个fragment中修改了它,其他fragment中的会变化吗?为什么?
查看完整描述

3 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

会发生变化。原因如下:

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

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


查看完整回答
反对 回复 2019-04-19
?
MYYA

TA贡献1868条经验 获得超4个赞

会改变,静态成员变量是属于类的而不是属于对象的,所以实际上在不同对象上操作的静态成员变量是同一个


查看完整回答
反对 回复 2019-04-19
?
慕容3067478

TA贡献1773条经验 获得超3个赞

会的, 静态变量属于类, 在访问权限许可时可被所有实例共享


查看完整回答
反对 回复 2019-04-19
  • 3 回答
  • 0 关注
  • 526 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信