虽然循环在一个线程中运行,但它阻止了主要的gui

时间:2018-05-27 23:18:41

标签: android

为什么此代码会阻止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();

运行它会阻止主要的ui。

1 个答案:

答案 0 :(得分:5)

  

为什么此代码会阻止while循环中的主UI?

因为它在主应用程序线程上运行。您的循环位于Runnable post()The documentation for post()表示“runnable将在用户界面线程上运行”。这里,“用户界面线程”指的是主应用程序线程。