一起Talk Android吧(第一百七十三回:Android中的Handler机制二)

各位看官们大家好,上一回中咱们说的是Android中Handler机制的例子,这一回咱们继续说该例子。闲话休提,言归正转。让我们一起Talk Android吧!

看官们,我们在上一章回中介绍了Handler的知识,这一回中我们将通过文字结合代码的形式介绍如何使用Handler.

  • 1.创建一个App项目,项目中只包含一个名叫MainActivity的空Activity;
  • 2.定义Handler类的子类SubHandler,并且重写handleMessage方法;
 public class SubHandler extends Handler {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            switch (msg.what){
                case MSG_START:
                    showMessage(msg.obj.toString());
                    break;
                case MSG_END:
                    showMessage(msg.obj.toString());
                    break;
                default:
                    showMessage(msg.obj.toString());
                    break;
            }
        }
    }
  • 3.在MainActivity的onCreate函数中定义Handler类型的对象:
 mSubHandler = new SubHandler();
  • 4.在MainActivity中创建两个Button,并且设置监听器用来发送消息;
mBTStartMsg = (Button) findViewById(R.id.id_bt_start_message);
mBTEndMsg = (Button) findViewById(R.id.id_bt_end_message);

mBTStartMsg.setOnClickListener(v ->sendMsg(MSG_START,"Start"));
mBTEndMsg.setOnClickListener(v -> sendMsg(MSG_END,"End"));
  • 5.定义一个用来发送消息的方法,通过该方法把消息发送到消息队列中;
 public void sendMsg(int type,String content) {
    Message msg = new Message();
    msg.what = type;
    msg.obj =content;
   mSubHandler.sendMessage(msg);
}
  • 6.Lopper从消息队列中取出消息并且回调Handler的handleMessage方法,这个操作是Looper自动完成的,不需要我们操作;

我们重点看一下步骤5中发送消息的方法,该方法的参数是消息的类型和内容,在方法中把这两个参数封装成Message类型的对象,然后使用Handler的sendMessage方法发送到消息队中;另外,我们把消息的类型写成了常量,这样符合工程规范。

我们再分析一下骤2中重写的handleMessage方法,我们通过msg.what来判断消息的类型,然后依据不同的类型来处理不同的消息,这里的处理方式比较简单:获取消息的内容并且通过Toast显示给用户;当我们分别点击start和end按钮时,它就会弹出Toast来显示"Start"和"End".这里显示的内容和我们发送消息时添加的内容完全相同。

Handler就这样默默无闻地我们发送并且处理了消息。至于消息队列如何创建,如何管理,我们不需要关心。此外,我们在代码中发送和处理消息都是在主线程中,没有涉及子线程中,大家可以自己去实现,或者等一等,我们在后面章回中会有在子线程中发消息,在主线程中处理消息的例子。

各位看官,关于Android中Handler机制的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

talk_8

真诚赞赏,手有余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值