用Handler的post()方法来传递线程中的代码段到主线程中执行

转载 2016年08月30日 15:46:31


package com.kale.handler;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.widget.TextView;

/**
 * @author:Jack Tony
 * @tips  :将自己线程中的代码段传递到主线程中执行,用post方法就可以把runnable中的代码进行传递了。
 * @date  :2014-7-31
 */
public class MainActivity extends Activity {
  TextView valueTv;
  public Handler mHandler;
  private MyThread thread;
  // 定义一个自己的线程
  class MyThread extends Thread {
    @Override
    public void run() {
      System.out.println("线程开始运行");
      Runnable r = new Runnable() {
        @Override
        public void run() {
          valueTv.setTextColor(Color.RED);
          valueTv.setTextSize(30);
          valueTv.setText("从线程中传过来的代码段");
          System.out.println("执行runnable代码的线程:"+Thread.currentThread().getName());
        }
      };
      //上面代码中的runnable线程体经过post后会直接传送到主线程中执行修改字体的操作。
      //post直接可以把一段代码当做变量一样传递,但是请不要传送耗时操作的代码到主线程中
      mHandler.post(r);
    }
  }

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    valueTv = (TextView)findViewById(R.id.vale_textView);
    mHandler = new Handler();
    thread = new MyThread();
    // 启动线程
    thread.start();
  }


  
}

Android如何执行一个不确定当前处于在子线程还是主线程中的UI操作

Android执行一个不确定当前处于在子线程还是主线程中的UI操作
  • canot
  • canot
  • 2016年01月25日 10:28
  • 3045

关于在子线程中在run方法执行完之后通知主线程进行操作的方法。(Toast在子线程中无法使用)

主线程对子线程的回调。
  • qq_26033289
  • qq_26033289
  • 2016年08月16日 15:00
  • 786

把Runnable 方法提交到主线程运行

1.在自己建立的Utils中添加如下方法 public static void runOnUiThread(Runnable runnable) { // 在主线程运行 if(android...
  • gaobaoshen1
  • gaobaoshen1
  • 2016年05月09日 13:50
  • 723

android之postDelayed是否运行在主线程中解答

知识点 1、postDelayde是否运行在主线程中?答案是肯定的。 代码如下 在绝对的UI线程中打印线程ID: System.out.println("-=-=-=>>xianchengid0...
  • qq_16628781
  • qq_16628781
  • 2016年07月09日 10:57
  • 4954

handle.post 跳到主线程中执行

package com.example.che;import android.os.Bundle; import android.os.Handler; import android.app.Acti...
  • qq_15267341
  • qq_15267341
  • 2017年02月07日 15:03
  • 403

Android 如何判断当前代码是否在主线程中执行

方法一: Looper.getMainLooper() == Looper.myLooper(); 方法二: Looper.getMainLooper().getThread() == Th...
  • ecjtuhq
  • ecjtuhq
  • 2017年03月05日 18:34
  • 779

[Android] 任意时刻从子线程切换到主线程的实现

在Android开发中常常会遇到网络请求,数据库数据准备等一些耗时的操作;而这些操作是不允许在主线程中进行的。因为这样会堵塞主线程导致程序出现未响应情况。 所以只能另起一个子线程进行这些耗时的操作,完...
  • qiujuer
  • qiujuer
  • 2014年11月30日 09:30
  • 7397

handler.post方法的终极最直观的理解与解释

网上看了10篇左右的博客,都没有把为什么要用handler.post方法说清楚,云里雾里的。 本文我想说明的是为什么要使用handler.post方法,它和常用的handler.sendmessage...
  • u012534831
  • u012534831
  • 2016年08月15日 16:19
  • 4228

Handler.post(Runable),Runable是运行在主线程中的。

在Android中可以通过handler方法完成数据的线程间的传递,但一定要将handler得到的数据通过loop传递到主线程再更新UI吗?其实也可以直接使用handler设计的post方法进行实现,...
  • qq_24004499
  • qq_24004499
  • 2017年07月27日 19:35
  • 120

【Android】如何方便地将代码抛到主线程执行

稍微有过Andorid开发经验的同学都知道,Android开发中涉及到UI变动的操作,必须在主线程中执行, 否则会crash, 报错如下:java.lang.RuntimeException: Can...
  • u013015161
  • u013015161
  • 2016年10月08日 20:11
  • 3183
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用Handler的post()方法来传递线程中的代码段到主线程中执行
举报原因:
原因补充:

(最多只允许输入30个字)