Android - Thread中的Looper.prepare()vs Activity.runOnUIThread()

时间:2015-07-14 08:39:46

标签: android multithreading android-looper android-runonuithread

我的问题很简单,但我找不到令人满意的答案。问题是:如果我在Looper.prepare()开始时调用Runnable,我的线程是否会在UI线程上运行?

我知道Looper用于MessageQueue并在线程之间交换数据,但它是否使代码在UI线程上运行?

下面的代码将解释:

@Override
public void onReceive(final Context context, Intent intent) {
if(intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) {

        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                Looper.prepare();
                // ... some code ... //
                Looper.loop();
            }
        };

        Thread thread = new Thread(runnable);
        thread.start();
    }
}

1 个答案:

答案 0 :(得分:1)

不,它不会让你的线程在UI线程上运行。有关详细信息,请参阅:Communicating with the UI Thread