【发布时间】:2013-06-12 12:06:02
【问题描述】:
我不想检查我的 xClass 中的变量是否从我的主类更改。问题是,我的变量仅在单击 ImageView 并且在线程中运行时才会更改,所以我不想检查在我的主类中的一个while循环(我不知道这是否可能)中,当变量改变时做某事。所以这是我尝试过的,但是当我运行程序时它只是停止,什么也不做。
Thread setBack = new Thread() {
public void run() {
knight.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Counter++;
//also have some code here.
}
}
};
所以这是我的线程,计数器是我想观察的值。我使用 get 方法返回值。
public boolean getCounter(){
if(Counter>=1){
return true;
}
return false;
}
所以这表明值发生了变化(计数器是全局变量)。 这就是我在主课上所做的。
while (true) {
if (xClass.getCounter()) {
// do something
}
}
这是我的程序实际停止运行的地方。我想不出任何其他方法来获取值已更改的指示符。
感谢您的帮助,谢谢。
【问题讨论】:
-
除了提到的所有其他内容之外,请确保变量被声明为 volatile。您的整体方法听起来有问题 - 一旦满足条件,让后台线程在 ui 线程上运行某些东西可能会更好,这样您就可以避免阻塞 ui 线程。