摘要: 引用来自easyandroid论坛,原文:http://www.easyandroid.com/bbs/viewthread.php?tid=331.活用Android线程间通信的Message机制 1.1.Message 代码在frameworks\base\core\java\android\Os\Message.java中。 Message.obtain函数:有多个obtain函数,主要功能一样,只是参数不一样。作用是从Message Pool中取出一个Message,如果Message Pool中已经没有Message可取则新建一个Message返回,同时用对应的参数给得到的Mes.. 阅读全文
posted @ 2012-01-06 16:41 hnrainll 阅读(5772) 评论(0) 推荐(1) 编辑
摘要: 很多初入Android或Java开发的新手对Thread、Looper、Handler和Message仍然比较迷惑,衍生的有 HandlerThread、java.util.concurrent、Task、AsyncTask由于目前市面上的书籍等资料都没有谈到这些问题, 今天Android123就这一问题做更系统性的总结。 Android开发过程中为什么要线程能? 我们创建的Service、Activity以及Broadcast均是一个主线程处理,这里我们可以理解为UI线程。但是在操作一些耗时操作时,比如 I/O读写的大文件读写,数据库操作以及网络下载需要很长时间,为了不阻塞用户界面,出现AN 阅读全文
posted @ 2012-01-06 16:39 hnrainll 阅读(462) 评论(0) 推荐(1) 编辑
摘要: 在 android 中,不可以在子线程中更新 UI 的操作,否则会报错或者异常信息。在这种情况下,我们会使用 Handler(在 UI 线程创建该对象) 接收子线程的消息更新 UI.可以看出,这是子线程通知主线程,而主线程没有直接通知子线程,那麽我们如何做到这一点?这样有什么好处?好处,很明显。主线程中如果有些耗时的操作,我们可以让子线程去做,这时,主线程就可以通知子线程了!实现这种操作的方式有很多,今天主要想说说 HandlerThread 与 Handler 的配合使用方法。在主线程中,可以创建 HandlerThread 对象:view plainprint?HandlerThread 阅读全文
posted @ 2012-01-06 16:32 hnrainll 阅读(2453) 评论(0) 推荐(1) 编辑
摘要: Android 包括一个应用程序框架、几个应用程序库和一个基于 Dalvik 虚拟机的运行时,所有这些都运行在 Linux 内核之上。通过利用 Linux 内核的优势,Android 得到了大量操作系统服务,包括进程和内存管理、网络堆栈、驱动程序、硬件抽象层、安全性等相关的服务。有关Java虚拟机跟进程,线程的关系请参看下面这篇文章:进程、线程与JVM、CLR http://blog.csdn.net/ghj1976/archive/2010/04/13/5481038.aspx下面这篇文章对Android的进程和线程描述的很好,我在这篇文章基础补充了一些图片和信息。http://blog.c 阅读全文
posted @ 2012-01-06 14:37 hnrainll 阅读(394) 评论(0) 推荐(0) 编辑
摘要: 1. Looper类用来为一个线程开启一个消息循环。 默认情况下android中新诞生的线程是没有开启消息循环的。(主线程除外,主线程系统会自动为其创建Looper对象,开启消息循环。) Looper对象通过MessageQueue来存放消息和事件。一个线程只能有一个Looper,对应一个MessageQueue。 2. 通常是通过Handler对象来与Looper进行交互的。Handler可看做是Looper的一个接口,用来向指定的Looper发送消息及定义处理方法。 默认情况下Handler会与其被定义时所在线程的Looper绑定,比如,Handler在主线程中定义,那么它是与主线... 阅读全文
posted @ 2012-01-06 14:30 hnrainll 阅读(10071) 评论(0) 推荐(0) 编辑
摘要: 我最近在自学Android,当遇到问题时也只能看看开发文档,或者上网查资料解决,远有直接看源码来得直接。国内倒是有个Android镜像 网站,但不提供下载源码的链接;苦于没有下源码的地方,一气之下,上网搜索所有关于下载Android源码的方法和资料,看得朦朦胧胧的,不过还是终得正 果。下面总结下载Android源码的整体过程(其实非常Easy!): 一、前期准备 1.下载Msysgit工具 Windows环境下的Git客户端程序,下载地址:http://code.google.com/p/msysgit/ 参见下图: 2.安装Msysgit工具 参见下图: 3.在磁盘上建立一个文... 阅读全文
posted @ 2012-01-06 14:27 hnrainll 阅读(778) 评论(0) 推荐(0) 编辑
摘要: CallBack是回调的意思,熟悉Windows编程的人对"回调函数"这四个字一定不会陌生,但是Java程序员对它可能就不太了解了。"回调 函数"或者"回调方法"是软件设计与开发中一个非常重要的概念,掌握"回调函数"的思想对程序员来说(不管用哪种语言)是非常必要的。 那么什么是回调函数呢?我认为,回调函数就是预留给系统调用的函数,而且我们往往知道该函数被调用的时机。这里有两点需要注意:第一点,我们写回调函数不是给自己调用的,而是准备给系统在将来某一时刻调用的;第二点,我们应该知道系统在什么情形下会调用我们写的回调函 阅读全文
posted @ 2012-01-06 14:22 hnrainll 阅读(471) 评论(0) 推荐(0) 编辑
摘要: 作为一个大三的预备程序员,我学习android的一大乐趣是可以通过源码学习 google大牛们的设计思想。android源码中包含了大量的设计模式,除此以外,android sdk还精心为我们设计了各种helper类,对于和我一样渴望水平得到进阶的人来说,都太值得一读了。这不,前几天为了了解android的消息处理机 制,我看了Looper,Handler,Message这几个类的源码,结果又一次被googler的设计震撼了,特与大家分享。android的消息处理有三个核心类:Looper,Handler和Message。其实还有一个Message Queue(消息队列),但是MQ被封装到Lo 阅读全文
posted @ 2012-01-06 14:13 hnrainll 阅读(760) 评论(0) 推荐(0) 编辑