2012年9月28日

摘要: 从动手写这本书,到正式出版,历经了两年多的时光。其间,由于工作压力,有一年的时间只字未添,有很多章节不断的易稿整理补充新的内容,在几多纠结后总算是能面世见人。两年多前,Android开发还是一个比较新鲜的领域,好书难觅,任何复杂一些的框架机制和实现模式,都需要摸爬滚打自行揣摩。于是决意要写一本书,把自己从事Android开发的一些经验总结,和对源码的学习了解,都整理出来。最早我给这本书的名字,与我博客上的一些文章同名,名曰『深入理解Android』,目标是把Android的一些核心机制的实现以及开发中常遇到的问题都剖析清楚,不仅能把底层实现说透了,更重要的是能够和实际开发关联的更为紧密。我不希阅读全文
posted @ 2012-09-28 20:14 duguguiyu 阅读(5643) 评论(9) 编辑

2010年5月29日

摘要: Activity间数据传输当对Android有一些了解后,不难发现,Android程序UI框架接近于Web页面的概念。每一个用于呈现页面的组件,Activity,都是彼此独立的,它们通过系统核心来调度整合,彼此之间的通过Intent机制来串联。每一种架构都会有其利弊,Android当然也不能超然脱俗。由于Activity之间的松耦合关系,使得其复用能力特别的出色,Mash-Up方式可以有效的提高开...阅读全文
posted @ 2010-05-29 23:23 duguguiyu 阅读(14258) 评论(13) 编辑

2010年5月2日

摘要: 资源文件作为一枚coder,做界面,很多时候都是一场梦魇。很多时候,我们会感觉对于底层逻辑实现的很有把握性,哪怕需求一直在变,也可以通过不断的重构一直跟进,一切尽在掌握。但遭遇界面,往往就不再如此,它的好坏总是和审美、体验之类的词汇扯在一起,在凤姐芙蓉出没的年头,谈审美成为一件恐怖的事情。你可能会被要求不停的改代码,就为了移动一个像素,调整一枚按钮,琐碎而无聊。为了改变这样的状况,挽救coder们...阅读全文
posted @ 2010-05-02 19:58 duguguiyu 阅读(8775) 评论(2) 编辑

2010年3月27日

摘要: 界面构造UI界面,对于每个应用而言,是它与用户进行交互的门脸。好的门脸,不只是是要亮丽可人,最好还能秀色可餐过目不忘,甚至还应该有涵养有气质,彬彬有理温柔耐心。对于开发者来说,锻造这样的面容,不但需要高超的技艺,也需要有称手的工具和对得起党的料子。俗话说,朽木不可雕也,芙蓉不是一日炼成的,不是什么平台都能叫特能书。有套好用的UI框架,对于开发者而言,真有如沙漠中的甘露,而要是撞见了杯具的UI套件,...阅读全文
posted @ 2010-03-27 19:45 duguguiyu 阅读(13689) 评论(5) 编辑

2010年2月22日

摘要: 任务、进程和线程关于Android中的组件和应用,之前涉及,大都是静态的概念。而当一个应用运行起来,就难免会需要关心进程、线程这样的概念。在Android中,组件的动态运行,有一个最与众不同的概念,就是Task,翻译成任务,应该还是比较顺理成章的。Task的介入,最主要的作用,是将组件之间的连接,从进程概念的细节中剥离出来,可以以一种不同模型的东西进行配置,在很多时候,能够简化上层开发人员的理解难...阅读全文
posted @ 2010-02-22 22:25 duguguiyu 阅读(27567) 评论(9) 编辑

2010年2月7日

摘要: Intent解析基于组件的架构体系,除了有定义良好的组件,如何把这些组件组装在一起,也是一门艺术。在Android中,Intent(貌似通常译作:意图...),就是连接各组件的桥梁。前段时间看同事们做Symbian平台的网易掌上邮(真的是做的用心,NB的一米,热情欢迎所有163邮箱的S60v3用户,猛点击之...),有个功能是为邮件添加附件,比如你想要通过邮件发送一副图片泡mm,可能需要有个很直观...阅读全文
posted @ 2010-02-07 22:09 duguguiyu 阅读(10923) 评论(5) 编辑

2010年1月30日

摘要: Android组件横看成岭侧成峰,远近高低各不同。 -- 《题西林壁》组件(Component),在谈及所谓架构和重用的时候,是一个重要的事情。很多时候都会说基于组件的软件架构,指的是期望把程序做乐高似的,有一堆接口标准封装完整的组件放在哪里,想用的时候取上几个一搭配,整个程序就构建完成了。在开篇的时候就在说,Android是一个为组件化而搭建的平台,它引入所谓Mash-Up的概念,这使得你在应用...阅读全文
posted @ 2010-01-30 13:09 duguguiyu 阅读(13928) 评论(6) 编辑

2010年1月23日

摘要: Android架构和特征千呼万唤始出来,犹抱琵琶半遮。 -- 《琵琶行》虽贵为富二代,但Android要是没任何可圈点的地方,开不过70迈,在玲琅满目的手机平台竞争中,充其量也就做几个俯卧撑打一桶酱油,然后被落的远远的。说到底,出来混,靠的还是技术。架构从SDK文档中,偷来一幅Android平台的架构图,如上。在整个架构最底层红彤彤的部分,是Linux Kernel在移动平台的一个移植,它隐藏了硬...阅读全文
posted @ 2010-01-23 02:26 duguguiyu 阅读(21230) 评论(14) 编辑

2010年1月21日

摘要: 序携来百侣曾游,忆往昔峥嵘岁月稠。 -- 《沁园春·长沙》对于Android,我也算是老人了,所谓,有文有真想。正由于这段玩票经历,使得我在毕业后,鬼使神差的成为移动平台的一名码工,再次有机会放肆的拥抱Android。2010开年,手上突然有了一把闲散时间,有机会进一步总结和学习Android。于是想再一次为Android写一系列的东西,这些东西来自于一些开发经验,对源码的学习和对And...阅读全文
posted @ 2010-01-21 00:56 duguguiyu 阅读(14865) 评论(31) 编辑

2009年6月17日

摘要: 永远活在同步的流程里,无疑是我等码工最大的奢望之一。为了不阻塞UI,为了读写一陀陀数据,为了含辛茹苦的演算复杂的逻辑,为了大家和睦相处共同劳动,总是需要异步处理,你一下我一下共同完成任务。在Symbian中,做了一套机制来做这件事情,这就是Active Objects。Active ObjectsActive Object是一套事件驱动的多任务模型。在Symbian的标准线程中(除掉一些Java构...阅读全文
posted @ 2009-06-17 01:13 duguguiyu 阅读(3564) 评论(3) 编辑

2009年6月13日

摘要: 【四】 Symbian的容器Symbian在设计之初,没有拥抱STL,这就要求,它需要重新制作一些轮子,容器便是其中的一个。CArray系列容器Symbian的设计者,非常喜欢复杂的继承结构和保罗万象的类,CArray系列的容器,就是在这种理念下的产物。CArray是顺序容器,相当于STL的vector + list,以及更多。CArray系列容器,在继承的最底端,也就是可实例化使用的类,都采用C...阅读全文
posted @ 2009-06-13 00:55 duguguiyu 阅读(2668) 评论(5) 编辑

2009年5月29日

摘要: 【三】 Symbian的描述符所谓描述符,一定程度上等同于字符串。只不过与C++的字符串不一样,Symbian中的描述符都是用一个附加的整数描述其长度,而不是以'\0'做终结符。因此,描述符可以表达任意数据,字符串或者二进制串。描述符体系打开任何一本关于Symbian介绍的书,都可以看到Symbian描述符那复杂的继承体系。它的基类是TDesC,顾名思义,T是代表它是T类,后缀C表示它是一个常量,...阅读全文
posted @ 2009-05-29 12:07 duguguiyu 阅读(2777) 评论(3) 编辑

2009年5月28日

摘要: 【二】 Symbian对象构造C++的纯手工内存管理,确实是一个万恶之源。在对象构造时,有一个著名的内存泄漏隐患问题。比如一个类如下:class A{public: A() { a1 = new T1(); a2 = new T2(); ... an = new Tn(); }private: T1 * a1; T2 * a2; ... Tn * an;}当你调用 new A() 进行分配的...阅读全文
posted @ 2009-05-28 02:26 duguguiyu 阅读(3462) 评论(5) 编辑

2009年5月25日

摘要: 【一】 Symbian命名法每个美感尚存的C++ coder,第一次看到Symbian C++的程序,第一反应是:这鬼代码怎么缩进的?接下来,所有人会有疑问应该是:函数和类上的乱七八糟的前后缀是啥意思?娃再丑也是爸妈生的,生成这模样虽然很无奈,但确实也是事出有因。在我看来,Symbian命名法的核心出发点,就是为了更好的内存资源管理。C++的人肉内存管理模式,在给人以控制到字节的快感的同时,也带了...阅读全文
posted @ 2009-05-25 23:56 duguguiyu 阅读(3644) 评论(11) 编辑

2009年2月28日

摘要: 二. 分布式计算(Map/Reduce)分布式式计算,同样是一个宽泛的概念,在这里,它狭义的指代,按GoogleMap/Reduce框架所设计的分布式框架。在Hadoop中,分布式文件系统,很大程度上,是为各种分布式计算需求所服务的。我们说分布式文件系统就是加了分布式的文件系统,类似的定义推广到分布式计算上,我们可以将其视为增加了分布式支持的计算函数。从计算的角度上看,Map/Reduce框架接受...阅读全文
posted @ 2009-02-28 14:41 duguguiyu 阅读(31334) 评论(9) 编辑

2009年2月22日

摘要: 分布式基础学习所谓分布式,在这里,很狭义的指代以Google的三驾马车,GFS、Map/Reduce、BigTable为框架核心的分布式存储和计算系统。通常如我一样初学的人,会以Google这几份经典的论文作为开端的。它们勾勒出了分布式存储和计算的一个基本蓝图,已可窥见其几分风韵,但终究还是由于缺少一些实现的代码和示例,色彩有些斑驳,缺少了点感性。幸好我们还有Open Source,还有Hadoo...阅读全文
posted @ 2009-02-22 20:48 duguguiyu 阅读(35076) 评论(26) 编辑

2008年11月5日

摘要: 【五】 Chrome的插件模型1. NPAPI为了紧密的与各个开源浏览器团结起来,共同抗击IE的垄断,Chrome的插件,也遵循了NPAPI(Netscape Plugin Application Programming Interface)标准,支持这个标准的浏览器需要实现一组规定的API供插件调用,这组API形如NPN_XXX,比如NPN_GetURL,插件可以利用这些API进行二次开发。而N...阅读全文
posted @ 2008-11-05 00:39 duguguiyu 阅读(14659) 评论(12) 编辑

2008年10月24日

摘要: 【四】Chrome的UI绘制1. Chrome的窗口控件Chrome提供了自己的一个UI控件库,相关文档可以参见这里。用Chrome自己的话来说,我觉得市面上的七荤八素的图形控件库都不好用,于是自己倒腾倒腾实现了一套。。。广告虽如此说,不过,Chrome的图形控件结构,我还未发现有啥非常非常特别的地方。Chrome的窗口、按钮、菜单之类的控件,都直接或间接派生自View,这个是控件基类。Chrom...阅读全文
posted @ 2008-10-24 00:15 duguguiyu 阅读(17871) 评论(17) 编辑

2008年10月12日

摘要: 【三】 Chrome的进程模型1. 基本的进程结构Chrome是一个多进程的架构,不过所有的进程都会由老大,Browser进程来管理,走的是集中化管理的路子。在Browser进程中,有xxxProcessHost,每一个host,都对应着一个Process,比如RenderProcessHost对应着RenderProcess,PluginProcessHost对应着PluginProcess,有...阅读全文
posted @ 2008-10-12 00:34 duguguiyu 阅读(29674) 评论(7) 编辑

2008年10月4日

摘要: 【二】Chrome的进程间通信1. Chrome进程通信的基本模式进程间通信,叫做IPC(Inter-Process Communication),在Chrome不多的文档中,有一篇就是介绍这个的,在这里。Chrome最主要有三类进程,一类是Browser主进程,我们一直尊称它老人家为老大;还有一类是各个Render进程,前面也提过了;另外还有一类一直没说过,是Plugin进程,每一个插件,在Ch...阅读全文
posted @ 2008-10-04 09:27 duguguiyu 阅读(24338) 评论(18) 编辑

2008年10月2日

摘要: 【序】 开源是口好东西,它让这个充斥着大量工业垃圾代码和教材玩具代码的行业,多了一些艺术气息和美的潜质。它使得每个人,无论你来自米国纽约还是中国铁岭,都有机会站在巨人的肩膀上,如果不能,至少也可以抱一把大腿。。。现在我就是来抱大腿的,这条粗腿隶属于Chrome(开源项目名称其实是Chromium,本来Chrome这个名字就够晦涩了,没想到它的本名还更上一层楼...),Google那充满狼...阅读全文
posted @ 2008-10-02 12:09 duguguiyu 阅读(57006) 评论(71) 编辑

2008年9月4日

摘要: 9月1日,各大门户网站的科技版或是各技术网站都登出消息,“Google间接否认推出浏览器”,缘由是Google与Mozila的合约延长到2011年,正常人不会一边把钱揣在别人兜里,一边一脚把人踹到水中。。。可惜,Google偏偏是那个不正常的。9月2日,Google宣布,将在9月3日(BJ时间)发出自家密制两载浏览器Chrome。伟大的技术观察家预言者们终于明白,火土之间,...阅读全文
posted @ 2008-09-04 02:24 duguguiyu 阅读(8674) 评论(69) 编辑

2008年6月29日

摘要: Doxygen,大名鼎鼎的文档生成工具,被Boost、OpenCasCade等诸多项目作为文档生成的不二人选。人说,才华横溢往往是高深莫测,这句话放在Doxygen这里显然是不适用的。十八般武艺样样精通的Doxygen,却十分的简单易用,从头到尾看一下它随机的文档,想不会用都难。。。嫌看英文麻烦的,这里有一篇中文的入门介绍。简单的说,如果你准备在项目中采用Doxygen作为文档生成的工具,首先,你...阅读全文
posted @ 2008-06-29 02:13 duguguiyu 阅读(57863) 评论(7) 编辑

2008年5月18日

摘要: Android挑战赛第一轮前50的作品公布出来了,除了有4个暂时希望保密,其他46的介绍都已放出。虽然我大大的名落孙山之后,但不妨碍翻看这些作品,尝试思考一些手机应用的问题,尽情期盼下明天。这些作品,是由上百位领域专家,经过一套还算复杂的流程评选出来的。我想,从中不仅仅可以看到Android的发展方向,也可以看到手机应用的一个发展趋势。如果你想在Android这块地盘上分一碗羹,或者,期望在手机应...阅读全文
posted @ 2008-05-18 00:41 duguguiyu 阅读(8776) 评论(17) 编辑

2008年5月3日

摘要: 最近,在波利亚GG的谆谆教诲下,在pongba同学的循循善诱下,在TopLanguage的今天我们思考系列的热情引导下,我终于痛下决心开始琢磨所谓的科学思考问题的方法。对大部分人而言,解题不是终极目的,只是希望在解题中培养的思考问题的方式能够广泛的应用到其他领域。我依然觉得,思维这个抽象的可怕的东西,本质上还是个体化的,要因人而异,很难找到一招鲜吃遍天的套路。但其中,一些共性的东西还是可以抽取出来...阅读全文
posted @ 2008-05-03 02:30 duguguiyu 阅读(6838) 评论(33) 编辑

导航

统计