Handler 的用法

一些耗时的工作,不可以让主线程去处理,所以得开一个子线程,比如联网通信,但是子线程不能更新UI,所以用到Handler
Handler 用法:在子线程中把数据发送出去

public void run() {
Message message = new Message();
message.what = UPDATE_TEXT;
handler.sendMessage(message); // 将Message对象发送出去
}

然后在主线程中new一个 Handler,获取传回来的数据进行UI处理

private Handler handler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case UPDATE_TEXT:
// 在这里可以进行UI操作
text.setText("Nice to meet you");
break;
default:
break;
}
}
};

过程
1.首先需要在主线程当中创建一个 Handler 对象,并重写
handleMessage()方法。

2.然后当子线程中需要进行 UI 操作时,就创建一个 Message 对象,并
通过 Handler 将这条消息发送出去。

3.之后这条消息会被添加到 MessageQueue 的队列中等待
被处理,而 Looper 则会一直从 MessageQueue 中取出待处理消息,最后分发回 Handler的 handleMessage()方法中。由于 Handler 是在主线程中创建的,所以此时 handleMessage()方法中的代码也会在主线程中运行,于是我们在这里就可以安心地进行 UI 操作了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值