这是我的主题:
public void run() {
Log.d("ConnectionThread","Starting Server Connection");
try {
while(isThereActivityRunning()) {
if(AppLoader.getIsInternetOn() == true)
{
Log.d("ConnectionThread", "Internet is On. Sending Http request");
results = sendGetMessage();
b.putString("results", results);
receiver.send(2, b);
}
else
Log.d("ConnectionThread","Internet is Off. Sleeping");
Thread.sleep(timeInterval);
}
我有getIsInternetOn()
函数,它是我的AppLoader
类中的一个静态函数(扩展Application
)。
出于某种原因,每当我将AppLoader
中的静态布尔变量的值更改为false
时,它似乎不会影响上面的代码。
奇怪的是,在我的活动中,我能够将具有相同功能的相同变量更改为视图:
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (AppLoader.getIsInternetOn())
AppLoader.setIsInternetOn(false);
else
AppLoader.setIsInternetOn(true);
}
});
btn1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (AppLoader.getIsInternetOn())
internetStatus.setText("Internet is On");
else
internetStatus.setText("Internet is Off");
}
});
答案 0 :(得分:0)
您可能需要将布尔变量声明为volatile
。
答案 1 :(得分:0)
尝试将volatile
修饰符添加到静态变量中。
<强> UPD:强>
可能是因为为了性能目的而缓存了值。