我有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值。 怎么会?任何人都可以解释一下吗?
答案 0 :(得分:2)
默认情况下,broadCastReceivers
会在新流程上运行,因此无法共享相同的数据。
您需要更改清单定义,以便通过将android:process="string"
添加到广播接收器定义