美文网首页androidAndroid开发Android进阶之路
Android中切换到主线程执行的方法

Android中切换到主线程执行的方法

作者: lebronzhen | 来源:发表于2020-09-10 17:31 被阅读0次
    方法一: view.post(Runnable runnable)

    使用view对象,调用post方法即可在主线程中执行里边的代码,postDelayed是延时执行,也可以达到相同的效果。例如:

    textView.post(new Runnable() {
         @Override
         public void run() {
             textView.setText("更新textView");
         }
    });
    
    方法二:runOnUiThread(Runnable runnable)

    在Acitivity中直接调用runOnUiThread或者将Activity的context对象传入子线程调用。例如:

    runOnUiThread(new Runnable() {
        public void run() {
            textView.setText("更新textView");
        }
    }
    
    方法三:handler.post(Runnable runnable)

    如果是在主线程可以直接new一个Handler对象,如果是在子线程需要获取主线程的Looper和Queue

    // 主线程
    Handler handler = new Handler();
    // 子线程
    Handler handler = new Handler(Looper.getMainLooper());
    

    然后调用post方法,或者postAtTime、postAtDelayed即可。例如:

    handler.post(new Runnable() {
          @Override
          public void run() {
               textView.setText("更新textView");
          }
    });
    
    方法四:handler.sendMessage(Message message)

    这个是比较常用的方法通过sendMessage发送消息,然后在handleMessage中进行处理。例如:

    Handler handler = new Handler() {
          @Override
          public void handleMessage(Message msg) {
              super.handleMessage(msg);
              // 处理消息
              textView.setText("更新textView" + msg);
              switch(msg.what) {
                    case 0:
                          // 处理指定消息
                          break;
              }
         }
    };
    handler.sendEmptyMessage(0);
    
    方法五:使用AsynTask
     AsyncTask asyncTask = new AsyncTask() {
          @Override
          protected Object doInBackground(Object[] objects) {
              return null;
          }
    
          @Override
          protected void onPostExecute(Object o) {
              super.onPostExecute(o);
          }
    };
    

    doInBackground方法执行是在子线程中,其返回结果会传递到onPostExecute方法中,onPostExecute就是运行在主线程。

    以上就是几种常用的切换到主线程执行的方法,希望能够帮助到大家。

    相关文章

      网友评论

        本文标题:Android中切换到主线程执行的方法

        本文链接:https://www.haomeiwen.com/subject/fuipektx.html