我在APP中配置一个静态广播接收类MyTestReceiver ,为了当监听到事件时,去获取公共类 WebUtil中类成员addressConfig的属性ip值。
问题1、
我先启动APP,在一个Activity 活动中对公共类中静态成员属性设置值,例如 公共类 WebUtil中类成员addressConfig 设置ip=192.168.1.59, 然后退出APP进程。当系统接收到静态广播消息,MyTestReceiver 中 onReceive()方法执行WebUtil.addressConfig.getIp()值为初始值192.168.1.2,这个是什么原因?
问题2、
MyTestReceiver 中 静态属性对象 testThread 这样设置好吗,其生命周期是什么情况呢,会一直存在内存中吗?我测试了一下,当关闭App时,不存在活动的Activity时,当接收到静态消息,该线程testThread还是会存在。
public class WebUtil{
Public static final AddressConfig addressConfig =new AddressConfig();
....
}
public class AddressConfig
{
private String ip=192.168.1.2;
public String getIp(){
return this.ip;
}
private String mac;
...
}
public class MyTestReceiver extends BroadcastReceiver {
public static Thread testThread=null;
static {
testThread=new Thread( new Runnable(){
while(true){
............
}
})
}
@Override
public void onReceive(Context context, Intent intent) {
System.out.println(WebUtil.addressConfig.getIp());
}
}