什么是Handler?

Handler是Android系统给我们提供的一套用来更新UI的机制,也是一套消息处理机制,我们可以使用Handler来发送消息,也可以通过它来处理消息

Android中为什么要提供消息机制

我们都知道在android中有两个规定:

1. 网络请求操作要放到子线程。

2. 不能在子线程更新UI。所以Android中必须有线程间的通讯机制。那么为什么要有这两个规定呢?

耗时操作为什么要放在子线程中? 
答:如果在主线程一直执行代码,那么界面就会卡顿,为了提高用户体验,android增加了ANR机制,即界面长时间没有响应就会出现ANR。我们在开发中既为了避免界面卡顿,又避免出现ANR所以把耗时的操作放在子线程中。

Handler四大类?

Message:消息,其中包含了消息Id,消息处理对象以及处理的数据等,由MessageQuery统一管理,再交由Handler处理。

Handler:处理者,用于Message的发送与处理,使用Handler时需实现handlermessage(Message msg)方法来对特定的Mess处理,例如更新Ui等。

MessageQuery:消息队列,用来存放Handler发送过来的消息,并且是按照FIFO的规则执行,存放Message并不是实际意义的储存,而是将Message以链表的方式串联起来的,等待Looper的抽取

Looper:消息泵,不断地从MessageQuery中抽取Message,所以,一个MessageQuery需要一个Looper。

四大类使用概述总结?

1.在类中创建Handler对象,用来接收和处理消息 
2.然后再创建一个Loop对象,用来管理MessageQueue 
3.MessageQueue来接收和保存子线程发过来的消息 
4.上面只是做好接收消息的准备,做好相关准备后,才会让子线程发送消息 
5.子线程直接调用Handler对象,通过Handler对象的SendMessage方法来对主线程发送数据 
6.消息是保存在MessageQueue对象中的 
7.Loop控制MessageQueue传递消息给Handler对象,这里就要注意了,虽然概念上说的是Handler能对子线程的数据进行接收和处理。但实际上它是接收MessageQueue里面的数据,然后进行处理的,MessageQueue里面可以接收很多很多的数据,它们以队列的形式排列,当Handler处理完一个数据后,MessageQueue就会再传递下一个数据给Handler。 
8.上面是要重点理解的机制过程,MessageQueue对象内存放很多子线程发来的信息,有序的保存下来,并不做处理。而Handler一次只接收MessageQueue对象传来的一个数据,并进行处理。 
9.这是最后一步了,Handler对象对传来的信息进行判断,并作相应的行为。

更多相关文章

  1. Android事件总线之EventBus3.0基本使用
  2. 【整理一点资料】 Andorid的进程和线程模型
  3. xamarin android异步更新UI线程
  4. android handlerthread 通知机制
  5. Android消息机制
  6. Android中AsyncTask使用详解
  7. Android消息机制(Handler原理)
  8. Android消息推送(二)--基于MQTT协议实现的推送功能
  9. Android之Handler

随机推荐

  1. android2.3中webkit在webview的一个更新
  2. android 中findViewById()为null的可能原
  3. Android(安卓)PreferenceActivity浅析
  4. 自己编译 tess-two几个库文件用于android
  5. android 退出 activity
  6. android在代码中设置margin属性
  7. Android蓝牙耳机录音
  8. Android(安卓)sdk 安装后 找不到adb.exe
  9. 一培训机构设计的学习android课程内容:供
  10. 01-android快速入门