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

Fab*_*ler 0 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();
Run Code Online (Sandbox Code Playgroud)

运行它会阻止主要的ui.

Com*_*are 5

为什么这段代码会阻塞while循环中的主UI?

因为它在主应用程序线程上运行.你的循环是Runnable你提供的post().该文档post()表明"runnable将在用户界面线程上运行".这里,"用户界面线程"指的是主应用程序线程.