java handler使用方法_Handler 使用详解

1c272b63e1e098ac69ab49e1a813b1d3.gif

d85f2eccb2341c07ed074177a4c922dc.png

阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android

本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:

Handler 消息处理机制原理

Handler 机制处理的4个关键对象

Handler常用方法

子线程更新UI 异常处理

主线程给子线程发送消息的方法

子线程给主线程发送消息的方法

主、子 线程 互发消息方法

子线程方法中调用主线程更新UI的方法

Handler是 Android中用来更新UI 的一套消息处理机制。Handler 允许线程间发送Message或Runnable对象进行通信。在Android中UI修改只能通过UI Thread,子线程不能更新UI。如果子线程想更新UI,需要通过 Handler发送消息给主线程,进而达到更新UI的目的。

Handler 简介

继承关系如下:

java.lang.Object

↳ android.os.Handler

1. Handler 消息处理机制原理

当Android 应用程序创建的时候,系统会给每一个进程提供一个Looper,Looper 是一个死循环,它内部维护一个消息队列,Looper不停的从消息队列中取Message,取到的消息就发送给handler,最后Handler 根据接收的消息去修改UI等。

2. Handler 机制处理的4个关键对象

1.Message

线程之间传递的消息,可以携带一些简单的数据供子线程与主线程进行交换数据。

2.Message Queue

存放通过Handler 发送的Message 的消息队列,每一个线程只有一个消息队列。

3.Handler

消息处理者,主要用于发送跟处理消息。

主要功能:

发送消息SendMessage()

处理消息 HandleMessage()

4.Looper

内部包含一个死循环的MessageQueue,用于存储handler发送的Message,Looper则是不断的从消息队列中取消,如果有消息就取出发送给Handler 处理,没有则阻塞。

总结:

Handler负责发送Message到Message Queue,Looper负责从Message Queue 遍历Message ,然后直接把遍历的消息回传给Handler自己,通过Handler自身的handleMessage处理更新UI等操作。

41d69e91fe102c4d5e07d45585f71742.png

3. Handler常用方法

1.Runnable对象

post(Runnable)

使用方法举例:

public void BtnRunnableMethod(View view) {

// 1.Runnable 对象

RunnableHandlderMethod();

}

/**

* Runnable 对象更新 UI

* **/

private Handler mRunnableHandler = new Handler();

public void RunnableHandlderMethod() {

new Thread() {

@Override

public void run() {

try {

Thread.sleep(1000);

mRunnableHandler.post(new Runnable() {

@Override

public void run() {

((Button) findViewById(R.id.btn_runnable))

.setText("Runnable");

}

});

} catch (InterruptedEx

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值