handler的基本使用

1.Handler是什么?

    主要是为了接受子线程的消息,配合主线程更新UI。    在Android系统内,主线程应该专注于更新UI,而不会把精力放到,请求网络,或者本地文件上,从而阻塞自己,使得自己的应用出现anr(application not responding)的情况。    还有就是Android中Android UI组件是线程不安全的,也就是说,更新UI的操作希望只在主线程中进行,而不希望在子线程中进行,Handler自然而然的就出现了。

2.Handler、Looper、MessageQueue 与 Message

    looper:循环读取消息,交由Handler处理,一个线程对应一个looper    MessageQueue:消息队列,一个looper对应一个消息队列    Message:消息,一个消息队列有多个消息    Handler:处理与分发消息,每个消息最多指定一个handler处理

3.handler中的方法

    post系列    post(Runnable)    postAtTime(Runnable,long)    postDelayed(Runnable long)    Send系列    sendEmptyMessage(int)    sendMessage(Message)    sendMessageAtTime(Message,long)    sendMessageDelayed(Message,long)

可以看一下post(Runable r)的实现

public final boolean post(Runable r){    return sendMessageDelayed(getPostMessage(r),long)}//而getpostMessage则是将runable包装成messageprivate static Message gerPostMessage(Runnable r){    Message m = Message.obtain();    m.callback = r;    return m;}
在处理message的时候,如果Message.callback不为空则使用这个将优先使用callba来处理Handle.mcallback不为空则使用mcallback处理如果前两个都不存在则使用handleMessage处理

更多相关文章

  1. 深入理解Android消息处理系统——Looper、Handler、Thread
  2. Android节拍器
  3. Android中关于线程使用的几点注意事项
  4. 【Android(安卓)开发】: Android(安卓)消息处理机制之三: Handle
  5. Android的内存泄漏和调试
  6. Android的消息机制
  7. android log 学习
  8. Android之——多线程下载示例
  9. Android(安卓)GWES之Android窗口管理

随机推荐

  1. Android 自定义View自定义属性的声明
  2. android 学习笔记(一):1 环境搭建
  3. android 的webview调用php服务器js , js
  4. Android事件分发机制 详解攻略
  5. Android控件布局常用属性
  6. Android Telephony框架结构简析
  7. Android 面试必备 - 线程
  8. Android中实现全屏、无标题栏的两种办法(
  9. Android 远程调试 JNI 实现 ( Android JNI
  10. 【Android(安卓)Developers Training】 5