使用MessageHandler更新UI--步骤和原理

 

主线程执行UI更新操作,子线程执行耗时操作,子线程通过MessageHandler通知主线程更新UI

 

步骤如下:

1. MainActivity.java 中new一个Handler对象

   

Handler handler=new Handler()
{
    @Override
public void handleMessage(Message msg) {
        switch (msg.what)
        {
            case 1:
                //执行更新UI的操作
                textView.setText("更新UI");
                break;
            default:
                break;
        }
    }
};

 

2. 子线程执行一段耗时操作后,需要更新UI,此时可添加如下代码

new Thread(new Runnable() {
    @Override
public void run() {
        Message message=new Message();
        message.what=1;     
        handler.sendMessage(message);   
    }
}).start();

 

 

异步消息处理机制的原理:

1.Message

   Message是在线程之间传递的消息,用于不同线程之间交换信息

 

2.Handler

   在子线程中发送消息,然后在主线程中接收消息并进行处理

 

3.MessageQueue

   一个队列,存放Handler发送的消息

 

4.Looper

   不断从MessageQueue队列中取出消息,传递到Handler的handleMessage()方法中

 

5. message中传输数据

往message中添加数据

Bundle b = new Bundle();
        b.putInt("age", 22);
        b.putString("name", "loulijun");
        msg.setData(b);

 

//从message中取出数据

  Bundle b = msg.getData();
    int age = b.getInt("age");

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值