Handler更新UI的几种方式

Handler、loop、MessageQueue的工作原理

Message:Handler接收和处理的消息对象
Looper:每个线程只能拥有一个looper.它的loop方法负责读取MessageQueue中的消息,读到信息之后就把消息返回给handler处理
MessageQueue:消息队列。程序创建Looper对象时,会在它的构造器中创建MessageQueue对象
---------------------  
作者:crazy_kid_hnf  
来源:CSDN  
原文:https://blog.csdn.net/crazy\_kid\_hnf/article/details/53133004  
版权声明:本文为博主原创文章,转载请附上博文链接!

public class MainActivity extends Activity {
 
    private TextView textView;
 
    private Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            textView.setText("ok2");//第二种更新ui的方法
        }
    };
 
    //第一种用handler更新UI的方法
    private void handler1(){
        handler.post(new Runnable() {
            @Override
            public void run() {
                textView.setText("ok1");
            }
        });
    }
 
    //第二种用handler更新UI的方法
    private  void handler2(){
        handler.sendEmptyMessage(1);//此处发送消息给handler,然后handler接收消息并处理消息进而更新ui
    }
 
 
    //第三种用handler更新UI的方法
    private void  handler3(){
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                textView.setText("ok3");
            }
        });
    }
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        textView = (TextView) findViewById(R.id.textview);
        new Thread(){
            @Override
            public void run() {
                try {
                    Thread.sleep(1000);
                    handler1();//第一种更新UI的方法
                    handler2();//第二种更新UI的方法
                    handler3();//第三种更新UI的方法
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }.start();
 
    }
 
}

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

每日一问(一)Handler相关知识

1、Handler负责发送Message和处理Mesage2、Message就是消息载体,可用what区分,也可传递对象3、MessageQueue消息队列,存储Message4、Looper循环取出MessageQueue里的Message交给Handler处理。5、一个线程只有一个Looper和MessageQueue,子线程中使用Handler一

Android Handler消息机制源码解析

好记性不如烂笔头,今天来分析一下Handler的源码实现Handler机制是Android系统的基础,是多线程之间切换的基础。下面我们分析一下Handler的源码实现。Handler消息机制有4个类合作完成,分别是Handler,MessageQueue,Looper,MessageHandler:获取消息,发送消息,以及处理消息的类Mes

Handler更新UI的几种方式 - HelloWorld