自定义的线程中是不能更新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 {@Overridepublic void run() {System.out.println("线程开始运行");Runnable r = new Runnable() {@Overridepublic void run() {valueTv.setTextColor(Color.RED);valueTv.setTextSize(30);valueTv.setText("从线程中传过来的代码段");System.out.println("执行runnable代码的线程:"+Thread.currentThread().getName());}};//上面代码中的runnable线程体经过post后会直接传送到主线程中执行修改字体的操作。//post直接可以把一段代码当做变量一样传递,但是请不要传送耗时操作的代码到主线程中
            mHandler.post(r);}}@Overrideprotected 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();}}

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

  1. C#如何将线程中的代码抛到主线程去执行

    private SynchronizationContext mainThreadSynContext; //主线程 mainThreadSynContext = new WindowsFormsSy ...

  2. 【Android 异步操作】Android 线程切换 ( 判定当前线程是否是主线程 | 子线程中执行主线程方法 | 主线程中执行子线程方法 )

    文章目录 一.判定当前线程是否是主线程 二.子线程中执行主线程方法 三.主线程中执行子线程方法 一.判定当前线程是否是主线程 在 Android 中 , 如果要判定当前线程是否是主线程 , 可以使用如 ...

  3. Android中Handler的使用方法——在子线程中更新界面

    本文主要介绍Android的Handler的使用方法.Handler可以发送Messsage和Runnable对象到与其相关联的线程的消息队列.每个Handler对象与创建它的线程相关联,并且每个Ha ...

  4. 【Android 异步操作】Handler ( 主线程中的 Handler 与 Looper | Handler 原理简介 )

    文章目录 一.主线程中的 Handler 与 Looper 二.Handler 原理简介 一.主线程中的 Handler 与 Looper Android 系统中 , 点击图标启动一个应用进程 , 就 ...

  5. 在子线程中更改主线程中的控件的信息,在子线程中用toast

    一丶在子线程中不允许更改主线程中的控件的信息,也不允许在子线程中用toast,我们要更改的话 (1)消息机制:使用handler (由主线程调用) 在主程序中Handler handler = new ...

  6. Java多线程面试题:子线程循环10次,接着主线程循环100,接着又回到子线程循环10次, 接着再回到主线程又循环100,如此循环50次

    近在学习多线程,特贴在这里,并附上自己所作答案(参考与张孝祥老师的方法). 题目如下: 子线程循环10次,接着主线程循环100,接着又回到子线程循环10次, 接着再回到主线程又循环100,如此循环50 ...

  7. C语言:记录在主线程中停止子线程

    主线程中创建一个子线程如代码: #include <stdio.h> #include <pthread.h> #include <unistd.h> #inclu ...

  8. UnityThread子线程使用只能在主线程中调用的函数或Unity API

    Unity的Socket网络编程中,为了防止程序卡死,一般使用多线程来监听端口,当收到来自客户端的消息时,需要显示在界面上.但是如果直接在子线程中操作Unity的界面或物体会报错.国外一个大神写了一个 ...

  9. 每个java程序都至少有一个线程给主线程,java程序在主线程中判断各个子线程状态的操作,该如何解决...

    java程序在主线程中判断各个子线程状态的操作 每个子线程在队列为空时会wait等待其他线程添加新url到队列,到最后所有子线程都取不到url时也会都wait住,要在主线程中判断如果所有的子线程都是w ...

最新文章

  1. linux——用脚本实现全自动安装虚拟机
  2. 聊聊flink的FencedAkkaInvocationHandler
  3. Fiddler对手机抓包
  4. 三大运营商一季度财报出炉:营收集体下降
  5. php更新时间就变成1970了,phpcms调用文章发布时间标签显示1970的解决方法
  6. 【编译原理笔记20】代码生成:代码生成器的主要任务,一个简单的目标机模型,指令选择,寄存器的选择,寄存器选择函数getReg的设计,窥孔优化
  7. python编译成汇编语言_查看C语言/C++编译器生成的汇编语言代码
  8. 烂笔头笔记:macOS卸载Adobe产品后,在Launchpad上遗留空文件夹的解决方法
  9. ML Note 3.4 - 数据降维算法 PCA / t-SNE
  10. 74ls系列中文资料功能介绍
  11. pytorch学习笔记7--循环神经网络、GAN
  12. SpringCloud第八章:Gateway新一代网关
  13. 网页 浏览器内核 Web标准(七七)
  14. 你的windows许可证即将过期
  15. 怎么在手机上取消双重认证_用手机在淘宝上怎么开网店?流程步骤详解
  16. 运维小白的python之路(一)
  17. uboot网络加载linux,DM8148 uboot 网络正常,Linux 起来后网络不通
  18. 求两个数之间的素数和
  19. 抱抱脸:ChatGPT背后的算法——RLHF | 附12篇RLHF必刷论文
  20. Discuz安装与配置

热门文章

  1. 在WinSCP中使用sudo进行sftp,不用输入密码,获得root权限
  2. Redis报错解决:RDB: 0 MB of memory used by copy-on-write
  3. 两路虚拟化服务器,服务器虚拟化(二)
  4. Spring Cloud Alibaba 统一门户:基于网关的统一用户认证方案
  5. python实现文件搜索_python实现搜索指定目录下文件及文件内搜索指定关键词的方法...
  6. mybatis 注解 动态sql_Mybatis 的动态 SQL 语句
  7. ffmpeg推流_明白了以下5点思路,你也能用Python实现直播推流效果(技术活)
  8. java myeclipse 下载_myeclipse 10|MyEclipse(优秀的Java开发工具myeclipse下载) 10.7官方版下载 - 下载吧...
  9. android studio apt作用,解决Android studio 3.0 apt插件问题
  10. 【PHPMailer】写一封邮件