静态变量不';t修改javaandroid
我有两个广播接收器和一个简单的类 -简单类有1个静态变量 -从broadcastReceiver1设置静态变量simpleClas.time时,varibale设置为正确的值 -但是,当您尝试从broadcastReceiver2访问simpleClass.time时,静态变量始终保持不变,它保留在init值中。这怎么可能? 最后是一个静态文件静态变量不';t修改javaandroid,java,android,static,Java,Android,Static,我有两个广播接收器和一个简单的类 -简单类有1个静态变量 -从broadcastReceiver1设置静态变量simpleClas.time时,varibale设置为正确的值 -但是,当您尝试从broadcastReceiver2访问simpleClass.time时,静态变量始终保持不变,它保留在init值中。这怎么可能? 最后是一个静态文件 class simpleClass{ public static long time = 0; } class broadCastReceiver1
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);
}
}
假设事件顺序为:
破产管理人1
破产管理人2
时间值一直读取到初始值0;
对于broadCastReceiver2,变量始终为值0,但在simpleClass类中,时间变量被更新!!!
您可以在simpleClass中使用variable time的新值执行其他操作
不知何故,broadCastReceiver2只看到simpleClass.time的初始值。
怎么会?有人能解释一下吗?默认情况下,
broadCastReceivers
在一个新进程上运行,因此它们不能共享相同的数据
您需要通过向广播接收器定义添加android:process=“string”
来更改清单定义,使其在同一进程上运行