这是我的主题:
@Override
public void run() {
Log.d("ConnectionThread","Starting Server Connection");
try {
while(isThereActivityRunning()) {
if(isInternetOn == 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");
}
ConnectionThread.sleep(timeInterval);
}
} catch (InterruptedException e) {
results = e.toString();
}
Log.d("ConnectionThread","Server Connection Finished");
}
isInternetOn
boolean
来自我所制作的事件监听器,它的值因互联网状态而改变。
出于某种原因,当互联网在(isInternetOn == true)
时,它会执行if条件,然后转到其他条件。
我无法弄清楚为什么会这样做。谢谢!
答案 0 :(得分:0)
我不确定我是否正确解析了您的问题,但您需要确保您在isThereActivityRunning()
内检查的值已标记为volatile
或已synchronized
在多个线程中访问。同样适用于isInternetOn
。如果您的线程没有看到此值更改,并且如果它被另一个线程更改,那么这可能是问题。您还可以使用AtomicBoolean
和其他类来共享线程之间的值。