2 BroadcastReceivers和1个​​静态变量

时间:2011-01-19 23:41:22

标签: android

我的Android应用程序中有2个BroadcastReceivers。它们在同一个包装中。 如果在onReceive()方法中,它们都读/写静态类变量(在单独的Util类中)。 android是否创建该静态类变量的1个副本或2个(每个接收器1个)?

我需要做些什么来确保他们访问静态类变量而不破坏数据?

2 个答案:

答案 0 :(得分:0)

不要使用静态变量,使类Singleton。

“我需要做些什么来确保他们访问静态类变量而不破坏数据?” - 将synchronized添加到getter / setters

答案 1 :(得分:0)

静态变量只有一个实例。来自http://download.oracle.com/javase/tutorial/java/javaOO/classvars.html

  

类变量是声明的任何字段   使用静态修饰符;这说明了   编译器中只有一个   这个变量的副本存在,   无论班级多少次   已被实例化。

为避免出现问题,您必须确保静态变量是线程安全的。某些数据结构(如Vector)已经是线程安全的,因此您无需进一步操作。否则,您可能必须使用synchronized关键字或java.util.concurrent.locks包中的内容。