静态变量不会修改java android

时间:2014-08-18 18:11:51

标签: java android static

我有2个broadcastReceivers和1个​​简单类 -simple类有1个静态变量 - 从broadcastReceiver1设置静态变量simpleClas.time时,varibale设置为正确的值 - 但是当您尝试从broadcastReceiver2访问simpleClass.time时,静态变量始终保持不变,它仍保留在init值中。那件事怎么可能? 最后是静态的

class simpleClass{
public static long time = 0;
}

class broadCastReceiver1 extends BroadcastReceiver{
@Override
    public onReceive(){

     //do some stuff and do an update of time variable
      simpleClass.time = System.currentTimeMillis()/1000;

    }
}

class broadCastReceiver2 extends BroadcastReceiver{
@Override
    public onReceive(){

     //do some stuff and only Read the variable time that was previously modified by broadCastReceiver1 and print the reading

     System.out.println("new Value of time = " + simpleClass.time);
    }
}

假设事件顺序为: broadCastReceiver1 broadCastReceiver2

始终读取时间值到初始值0; 对于broadCastReceiver2,变量始终为0,但在simpleClass类中,时间变量更新! 您可以使用可变时间的新值在simpleClass中执行其他操作。

以某种方式,broadCastReceiver2只能看到simpleClass.time的init值。 怎么会?任何人都可以解释一下吗?

1 个答案:

答案 0 :(得分:2)

默认情况下,broadCastReceivers会在新流程上运行,因此无法共享相同的数据。

您需要更改清单定义,以便通过将android:process="string"添加到广播接收器定义

来使它们在同一进程上运行