Android 虽然循环在线程中运行,但它阻止了主gui
为什么这段代码会阻塞while循环中的主UIAndroid 虽然循环在线程中运行,但它阻止了主gui,android,Android,为什么这段代码会阻塞while循环中的主UI new Thread(new Runnable() { public void run() { someButton.post(new Runnable() { public void run() { while (HintergrundDienst.laeuft) { //some delay co
new Thread(new Runnable() {
public void run() {
someButton.post(new Runnable() {
public void run() {
while (HintergrundDienst.laeuft)
{
//some delay code, like Thread.sleep
}
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
//do on ui after HintergrundDienst.laeuft = false
}
});
}
});
}
}).start();
运行此命令将阻止主ui
为什么这段代码会阻塞while循环中的主UI
new Thread(new Runnable() {
public void run() {
someButton.post(new Runnable() {
public void run() {
while (HintergrundDienst.laeuft)
{
//some delay code, like Thread.sleep
}
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
//do on ui after HintergrundDienst.laeuft = false
}
});
}
});
}
}).start();
因为它在主应用程序线程上运行。您的循环位于一个Runnable
中,该循环是提供给post()
的。指示“runnable将在用户界面线程上运行”。这里,“用户界面线程”指的是主应用程序线程
为什么这段代码会阻塞while循环中的主UI
new Thread(new Runnable() {
public void run() {
someButton.post(new Runnable() {
public void run() {
while (HintergrundDienst.laeuft)
{
//some delay code, like Thread.sleep
}
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
//do on ui after HintergrundDienst.laeuft = false
}
});
}
});
}
}).start();
因为它在主应用程序线程上运行。您的循环位于一个Runnable
中,该循环是提供给post()
的。指示“runnable将在用户界面线程上运行”。这里,“用户界面线程”指的是主应用程序线程