我在我的android应用程序中有一个线程,这个线程必须要睡一段时间才能等待一些将由runOnUiThread
线程设置的结果,问题是当我试图制作线程时睡眠runOnUiThread
也睡了一段时间,所以它不执行任何处理,直到另一个线程醒来,尽管runOnUiThread
存在于另一个分离的线程中。
这是我的代码:
包含runOnUiThread
的线程:
Thread xbmc = new Thread (){
@Override
public void run(){
System.out.println("one");// working perfectly
runOnUiThread(new Runnable() {
public void run() {
try {
System.out.println("two");// not work till the other thread wakes up
} catch (Exception e) {
}
}
});
}
};
xbmc.start();
这就是我睡觉的主题:
display = false;
Thread wait = new Thread(new Runnable() {
@Override
public void run() {
int d = 0;
while (d != 20) {
if (wake_up) {
display = true;
break;
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
d++;
}
if (!display) {
display = true;
}
}
});
wait.start();
while(!display){}// infinite loop waits for the thread to finish it's looks or something breaks it, and there is no something can break it but the `runOnUiThread` processing results
答案 0 :(得分:1)
我认为你错过了关于Thread
的一些基本概念。正如你所定义的那样,你的线程似乎(没有用),它们不会阻止你的UI,因为它们在后台运行。阻止您的用户界面的 是while (!display) {}
循环。
你在这里等待,直到你的线程修改了这个值,我想这不是你想要实现的。您需要定义其他一些方法,例如,将while (!display)
内容代码块附加到Thread
。