android异步消息处理机制

原创 2015年11月19日 20:40:04

Android异步信息处理机制

我们都知道android的ui更新操作都是在主线程执行的,但是很多时候我们都需要在子线程

中执行一些费时的操作,以获取我们所需要的变更数据。很多刚入门的同学都容易犯的一个错误就是在子线程试图去更新Ui控件,这样做是被android禁止的,所以会出现崩溃的现象。

Android的异步信息处理机制就是专门解决这个问题而诞生的。对于这个异步机制我们只需要知道四个对象即可,即Message,Handler,Looper,MessageQueue。它们的功能分别如下:

Message:故名思意就是消息,这个消息是可以携带对象的,我们可以通过message.what制定当前操作的类型,通过message.obj指定对象。

Handler:我们一般初始化的方法如下:

      Handlerhandler = newHandler() {

                    public voidhandleMessage(android.os.Message msg) {

                           Objectobj=msg.obj;//一般保存要传递的对象

                           Intwhat=msg.what;//获取到需要操作的类型

                           Switch(what)

                           {

                                  case0:break;//执行对应的操作

                                  case1:break;

                           }

                   

                    };

             };

当我们需要发送消息时,可以这样:

Message msg=new Message();

Msg.obj=new object();

Handler.sendMessge(msg);

整个消息的传递过程稍后解释。

MessageQueue:是一个消息队列,这里边存放了很多message,它们是以队列的方式排列的。消息会一个一个排在这里边。

Looper:就像是一个管家,他负责把messageQUeue里边的message一个一个取出来,并传递给handler,调用handleMessage方法,就实现了一个消息的异步传递。

 

整个过程是这样的。在子线程中执行完数据的获取操作,就给handler发送消息,此时,这个message会在messageQueue里边排队,Looper 检测到有message就会取出来,唤醒handle的handlerMessage方法,然后在这个方法里边就实现ui刷新。整个过程就成功的从一个子线程发送一个信号到主线程,然后主线程实现ui更新。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

AsyncTaskDemo异步消息处理机制

  • 2015年12月11日 16:43
  • 1.39MB
  • 下载

Android异步消息处理机制完全解析,带你从源码的角度彻底理解

我们都知道,Android UI是线程不安全的,如果在子线程中尝试进行UI操作,程序就有可能会崩溃。相信大家在日常的工作当中都会经常遇到这个问题,解决的方案应该也是早已烂熟于心,即创建一个Messag...

Android 异步消息处理机制:Looper、Handler、Message

我们都知道,Android UI是线程不安全的,如果在子线程中尝试进行UI操作,程序会发生崩溃。解决方法相信大家都用过无数次了:创建一个Message对象,然后借助Handler发送出去,之后在Han...

Android多线程----异步消息处理机制之Handler详解

感觉此篇文章很全面,很有价值,特此转载: 【声明】  欢迎转载,但请保留文章原始出处→_→  生命壹号:http://www.cnblogs.com/smyhvae/ ...

Android系统中异步消息处理线程机制的理解

单例的5种实现方式

Android异步消息处理机制总结

之前三篇博客,分别对android消息处理机制中涉及到的looper和handler根据源代码进行了分析,那么在这篇本博客中,我们来对android消息处理机制做一个总结。还是老惯例,直接先上示例代码...

《Android 异步消息处理机制 让你深入理解 Looper、Handler、Message三者关系》观后感

引子 今天学习了鸿洋大神的Android 异步消息处理机制 让你深入理解 Looper、Handler、Message三者关系,文章写得很精彩,推荐大家都来阅读,在这里做个笔记。 Handler ...

Android异步消息处理线程机制

Android异步消息处理线程机制概述普通线程: 对于一般的线程模型,执行完run()方法内的代码后线程就结束了。异步线程: 线程启动后会进入一个无限的循环体之中,每次循环,从其内部的消息队列中...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android异步消息处理机制
举报原因:
原因补充:

(最多只允许输入30个字)