Android开发:Handler的简单使用(一)

1.Handler是什么?

原文:

A Handler allows you to send and process Message and Runnable objects associated with a thread’s MessageQueue. Each Handler instance is associated with a single thread and that thread’s message queue. When you create a new Handler, it is bound to the thread / message queue of the thread that is creating it – from that point on, it will deliver messages and runnables to that message queue and execute them as they come out of the message queue.

翻译:

handler是用来接收和处理线程的消息队列里的message/runnable对象的工具。每个handler实例关联一个单独的线程和这个的线程的消息队列,handler实例会绑定到创建这个handler的线程。从那一刻起,handler会发送message/runnable到消息队列,然后在message/runnable从消息队列出来的时候处理它。

用法:处理线程之间消息的传递

2.为什么用handler?

考虑到java多线程的线程安全问题,android规定只能在UI线程修改Activity中的UI。为了在其他线程中可以修改UI,所以引入Handler,从其他线程传消息到UI线程,然后UI线程接受到消息时更新线程。

3.handler用法

Message可携带的数据

//通常作标志位,作区分
message.what;(int)

//携带简单数据
message.arg1;(int)
message.arg2;(int)

//携带object数据类型
message.obj;(object)

sendMessage 方式

接受消息并处理

private Handler mHandler = new Handler(new Handler.Callback() {
        @Override
        public boolean handleMessage(Message msg) {
            //处理消息
            return false;
        }
    });

发送消息

mHandler.sendMessage(msg);

post 方式

因为需要等待之前发送到消息队列里的消息执行完才能执行,所以需要异步等待。

new Thread(new Runnable() {
            @Override
            public void run() {
                mHandler.post(new Runnable() {
                    @Override
                    public void run() {

                    }
                });
            }
        }).start();

未完待续。。。

转载于:https://www.cnblogs.com/JasonLGJnote/p/11159860.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MessageHandlerAndroid中的一个接口,用于处理来自其他组件或线程的消息。在开发一个App时,你可以使用MessageHandler来处理和响应来自用户的消息、来自服务的消息、或者来自其他应用程序的消息。 以下是一些使用MessageHandler的步骤: 1.创建一个类来扩展MessageHandler,并实现handleMessage()方法。 2.在你的App中,创建一个Handler对象,并传入你刚才创建的MessageHandler类的实例。 3.在你的App中,使用Handler对象向MessageQueue发送消息。 4.当消息发送到MessageQueue中时,MessageQueue会将消息发送到MessageHandler中。 5.在MessageHandler中,你可以根据不同的消息类型,执行不同的操作。 下面是一个简单的示例代码: ``` public class MyMessageHandler extends MessageHandler { @Override public void handleMessage(Message msg) { // 根据消息类型,执行不同的操作 switch (msg.what) { case 1: // 处理消息类型为1的操作 break; case 2: // 处理消息类型为2的操作 break; default: // 处理其他类型的操作 break; } } } // 在Activity中创建Handler对象,并传入MyMessageHandler类的实例 Handler handler = new Handler(new MyMessageHandler()); // 发送消息到MessageQueue中 Message msg = Message.obtain(); msg.what = 1; handler.sendMessage(msg); ``` 在上面的代码中,我们创建了一个名为MyMessageHandler的类,它继承自MessageHandler,重写了handleMessage()方法。在Activity中,我们创建了一个Handler对象,并将MyMessageHandler类的实例传入。然后我们发送了一个消息到MessageQueue中,消息类型为1。当消息被发送到MessageQueue中时,MessageQueue会将消息发送到MyMessageHandler中,并执行相应的操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值