runOnUiThread简单应用

来源:互联网 发布:php开发软件下载 编辑:程序博客网 时间:2024/05/16 14:37

首先runOnUiThread是Activity内部的方法,在运用的时候最好指明当前环境变(Context).

new Thread(new Runnable() {

   @Override
   public void run() {
    System.out.println(Thread.currentThread().getId());
    runOnUiThread(new Runnable() {

     @Override
     public void run() {
      Toast.makeText(RunOnUIThreadActivity.this, "UI操作...", 1000).show();
     }
    });
   }

  }).start();

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
        new Thread(new Runnable() {

      @Override
      public void run() {
       if(isClose)
        return;
       if(i!=0)
       Toast.makeText(RunOnUIThreadActivity.this, i+"", 1000).show();
       i++;
       handler.postDelayed(this, 2000);
      }

     }).start();
       }

上面两个其实原理一样,runOnUiThread这个会调用父类中的

public final void runOnUiThread(Runnable action) {
        if (Thread.currentThread() != mUiThread) {
            mHandler.post(action);
        } else {
            action.run();
        }
    }

首先判断是否是UI线程,不是的话就post,如果是的话就正常运行该线程.

只要经过主线程中的Handler.post或者postDelayed处理线程runnable则都可以将其转为UI主线程.再说Handler的机制就是来处理线程与UI通讯的.

原创粉丝点击