Android 之runOnUiThread

Android确保在主线程中执行更新ui操作

利用Activity的runOnUiThread(Rannable)把动作放在rannable中,确保动作是在UI线程中执行的;

通过源码:

/**

 * Runs the specified action on the UI thread. If the current thread is the UI

 * thread, then the action is executed immediately. If the current thread is

 * not the UI thread, the action is posted to the event queue of the UI thread.

 *

 * @param action the action to run on the UI thread

 */

public final void runOnUiThread(Runnable action) {

    if (Thread.currentThread() != mUiThread) {

        mHandler.post(action);

    } else {

        action.run();

    }

}

发现,如果action是在主线程中,就直接执行,如果不是就post,这实质还是通过handler机制处理线程与UI线程的通信;

用法很简单,但要确保调用者是Activity对象,调用如下:

    VideoActivity.this.runOnUiThread(new Runnable() {
        @Override
        public void run() {
            Toast.makeText(getApplicationContext(), "在主线程中的", Toast.LENGTH_LONG).show();
        }
    });            

 

posted on 2019-02-25 14:34  rainbowLover  阅读(376)  评论(0编辑  收藏  举报