首页 > 代码库 > 用Handler的post()方法来传递线程中的代码段到主线程中执行
用Handler的post()方法来传递线程中的代码段到主线程中执行
自定义的线程中是不能更新UI的,但是如果遇到更新UI的事情,我们可以用handler的post()方法来将更新UI的方法体,直接传送到主线程中,这样就能直接更新UI了。Handler的post()方法就是将Runnable中的代码段传送到主线程。
布局文件就是个textView,我就不贴了。
全部代码
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(); } }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。