为了账号安全,请及时绑定邮箱和手机立即绑定

Android面试常客Handler详解

难度中级
时长 2小时 0分
学习人数
综合评分9.30
169人评价 查看评价
9.7 内容实用
9.3 简洁易懂
8.9 逻辑清晰
  • Android为什么要设计只能通过handler机制更新UI
    查看全部
  • 使用“Message”方式“发送消息”,使“Handler处理消息,并更新UI” 1.定义Handler,并且实例化,使用默认构造函数即可。 2.重写handlerMessage方法。 private Handler msgHandler=new Handler(){ //定义handler,重写处理message方法。当该handler发送消息的时候,这个方法会被执行。 public void handleMessage(android.os.Message msg) { //msg为当有sendMessage方法调用时,传过来的Message对象。 mTextView.setText("msg:"+msg.arg1); }; }; 3.定义Message对象。其中,Message提供了三个公共变量。arg1,arg2,obj,可以将消息放入其中,作为消息信息。然后发送消息即可 new Thread() { public void run() { Message message=msgHandler.obtainMessage();//从Handler对象中获取Message对象,而不是自己new,这样效率高。 message.arg1=1; message.sendToTarget(); //对于从handler对象中获取的message,可以直接使用该方法发送消息。 //msgHandler.sendMessage(message); //发送消息 }; }.start(); 知识拓展: 1。实例化Handler时,可以使用带一个Callback接口参数的构造函数。 其中Callback有一个未实现的方法。 这个方法有一个返回值(boolean) 2.当该Handler收到消息时,首先会调用Callback中的消息处理方法。 2.1 如果返回值为false,消息不会被截断。Handler依然可以处理该消息。 2.2 如果返回值为true,消息将会被截断。Handler中的处理消息方法不会被执行。
    查看全部
  • Callback()和 Handler()一样,都有handleMessage(Message message)方法,不同的是前者是有返回值的。 使用Callback()拦截消息: 在 Handler 发送消息的过程中,我们是可以去截获这个消息。要怎么去截获呢?在创建Handler对象的时候我们需要传入一个参数,也就是 new 一个 Callback 对象,在 Callback 对象当中就可以截获 Handler 发送过来的消息: Callback内部的方法 handlerMessage()默认返回一个 false,如果改成 true,就会截获消息,也就是说,Handler内部的方法 handlerMessage()将不会被执行。
    查看全部
  • 1. 我们要创建一个handler的时候,它会和默认的一个线程进行绑定,而这个默认的线程当中就有一个MessageQueue(消息队列)。 2. handler的两个用途:(1)定时发送一个Messages或者Runnables对象;(2)可以在一个线程当中去处理并执行一个Action的动作。 3. 主线程运行一个消息队列,并管理着一些顶级的应用对象(top-level application objects),包括Activity、Broadcast Receiver等等,这些对象默认都是创建在Activity Thread(也就是我们常说的UI线程或者主线程)当中。 下面图是通过postDelayed来更新图片 Handler的示例,实现图片轮播。 代码实现 1. 在主布局中定义一个ImageView控件。 2. 在 MainActivity 中创建并初始化ImageView,定义一个图片数组 images 和数组下标索引 index,创建一个Handler对象。 3. 创建一个内部类 MyRunnable 实现 Runnable 接口,重写 run() 方法: public void run() { index++; index = index%3; // 图片轮播(一般是通过ViewPager实现图片轮播) imageView.setImageResource(images[index]); handler.postDelayed(myRunnable,1000); // 每隔一秒换一次图片 } 4. 在onCreste()方法中调用handler,也就是在主线程中调用handler: handler.postDelayed(myRunnable,1000);
    查看全部
  • framework是什么?
    查看全部
    1 采集 收起 来源:Handler是什么

    2017-09-04

  • ActivityThread Handler通信
    查看全部
    0 采集 收起 来源:Handler是什么

    2017-08-24

  • Handler原理图解
    查看全部
  • Handler的原理
    查看全部
  • android为什么要设计只能通过handler机制更新UI呢?
    查看全部
  • 为什么要使用Handler?
    查看全部
    0 采集 收起 来源:Handler是什么

    2017-08-09

  • Handler是什么?
    查看全部
    0 采集 收起 来源:Handler是什么

    2017-08-09

  • 图解handler流程
    查看全部
  • 一句总结搞定handler机制
    查看全部
  • handler原理
    查看全部
  • android为什么设计只能通过handler机制更新UI?
    查看全部

举报

0/150
提交
取消
老师告诉你能学到什么?
通过本课程,你将学到: 1、什么是Handler 2、如何使用Handler 3、Handler的原理是什么 4、如何定义一个与线程相关的Handler 5、Android更新UI的几种方式 6、非UI线程真的不能更新UI吗 7、Handler使用过程中遇到的问题

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!