欢迎来到代码驿站!

Android代码

当前位置:首页 > 移动开发 > Android代码

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

时间:2021-07-25 08:39:15|栏目:Android代码|点击:

方法一: 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利用CircleImageView实现圆形头像的方法

栏    目:Android代码

下一篇:Android 自动完成文本框的实例

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

本文地址:http://www.codeinn.net/misctech/161282.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有