這是我的線程:改變應用程序線程靜態變量沒有效果
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