这是我的线程:改变应用程序线程静态变量没有效果
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");
}
});
我该怎么办?以及它如何只发生在线程中? – 2012-03-26 17:22:00
线程获取变量的值并缓存它,为了避免它,你可以像这样声明你的静态变量:'公共静态变量boolean mNameOfVariable;' – 2012-03-26 17:23:14
我试过了,它没有工作。它可以是因为我直接调用一个函数而不是变量? – 2012-03-26 17:52:10