Android开发精要高清版
Android开发精要为什么要写这本书直觉得我和 Android还是蛮有缘分的,从 Android发布第一个版本的SDK开始,我就一直在“摸着石头”写各种 Android应用,了解一切与 Android有关的事情,直至今日。还记得刚开始接触 Android时,由于缺少相关的学习资料或书籍,入门都是一件非常困难的事情,只能靠自己不断地翻看SDK文档、尝试各种代码实现来揣摩如何开发 Android应用,因而走过很多弯路,几乎犯过所有可能出现的错误,深感写好Android程序井不是一件很容易的事情。如今有大量的开发者开始从事 Android开发,幸运的是很多前辈写了大量关于Android开发的书籍,其中包括很多非常优秀的书籍,能帮助 Android开发者更快速地学习 Android开发,使他们不用再重复我当年初学时的痛苦。但从我在工作中接触到的 Android开发者来看,虽然学会如何编写 Android应用不再是难事,但他们依旧困扰于如何写出地道的、贴近 Android设计理念的、更加高效和运行可靠的 Android应用。虽然已经有很多功力深厚的书籍详细剖析过 Android底层实现的方方面面,能帮助开发者把 Android应用写得更出色,但正是由于这类书中包含了大量底层实现细节,因此使得开发者学习成本较高,难于从中快速获取期望的内容,痛感“远水解不了近渴”因此,我萌生了写这本书的念头,期望从我的开发经验和繁杂的 Android源代码中,抽取出 Android开发的“精华”和“要点”,这些“精要”剥离了很多琐碎的实现细节,进行了更多的概括和总结。这一方面能够帮助开发者更深入理解 Android的应用开发,从学会 Android进阶到理解 Android;另一方面又使他们不会被太多细节所牵绊,能够更快速地学习和掌握所需内容。本书主要内容本书将所有内容整理成四个部分共13章。第一部分帮助读者重新认识 Android,并从各个角度来介绍一些 Android的核心理念和学习方法,包含前两章内容。第1章从多个方面介绍和闻述了对 Android架构的理解,只有真正理解 Android的设计理念和思想才能够更快地掌握 Android开发。第2章介绍了如何获取、编译和阅读 Android源代码,对于愿意投入更多时间学习 Android的开发者来说,源代码无疑是最好的学习资料。第二部分深入阐述了 Android最核心的组件机制,包含4章内容。第3章从整体上阐述了 Android组件机制的设计理念和重要特征,详细介绍了4大组件的特点和使用方式。第4章从设计和源代码出发,讲解了 Intent对象和 Android的意图机制,旨在帮助开发者理解 Android是如何将来自不同应用、不同进程的组件整合在一起工作的。第5章介绍了 Android各个组件的生命周期,包括毎个组件的进程模型、线程模型,以及编程时需要把控的一些“要点”。第6章从实际开发的角度出发,详细介绍了组件间数据传递的解决方案,以及这些解决方案的优缺点和使用场景接下来的第三部分,转换到了另一个核心话题,即 Android的交互界面开发,包括两章内容。第7章讲解了 Android的控件框架,结合实际的项目,对重要控件的实现和使用逐一进行了分析与讲解,其中包含了最新的 Android4.0界面开发的一些实践“精华”。第8章继续介绍了 Android的资源体系,详细剖析了 Android底层对资源的处理,并结合具体的应用实现介绍了如何正确地配置资源和构建交互界面。剩下的章节是第四部分,其内容涵盖了 Android的各个核心模块,对每个模块的实现机制都做了分析,并结合具体的工程实践针对使用模块时最容易遇到的问题给出了解决方案。第9章介绍了 Android的数据存储结构,以及不同的数据存储模式的使用要点,包括基于文件、基于设置文件( Preference)、基于数据库、基于云端等多种模式。第10章介绍了 Android丰富多彩的网络连接方式,着重介绍了开发时常见问题的解决,范围不仅涵盖了传统的HTTP连接、蓝牙传输,还包括最新的近场通信(NFC)和基于WiFi的P2P连接等。第ll章讲解的是 Android的地理信息服务,不仅包括 Android的定位服务、地址服务和地图服务的框架实现,还特别针对定位时会遇到的各个问题给岀了解决方案。第12章围绕 Android的多媒体信息处理展开,具体包括了图像、音频、视频和相机的实现和使用,内存占用量大是多媒体处理中最常见的问题,该章结合对一些系统应用的剖析,总结了一些常用的解决策略。第13章涵盖内容比较多,主要介绍的是 Android中比较有特色的一些模块,包括短信和通话的处理、联系人的使用、通知机制( Notification)、桌面小工具( App widget)的开发等内容,着重介绍的是一些比较有特色的实现细节,以帮助开发者写出更为“地道”的 Android应用。本书特色本书最大的特色在于对底层实现机制的总结和整理,以及结合项目实践经验对开发中常遇到的核心问题给出具体的解决策略。对于底层实现机制的整理,可视为 Android开发的“要点”,每个开发者都需要理解和掌握这些内容,才能在开发时“下笔如有神”。为了能够更好地传达这些要点,本书中不会出现大段的底层实现代码,而是把所有的实现机制和策略,整理成文字和图表进行总结解析,以帮助读者更轻松地学习和理解。而对于实际开发问题的解决策略,可看做是 Android开发中的“精华”部分。本书从系统应用和一些优秀开源项目中整理出常见问题的解决策略,并结合个人实践经验分析不同解决策略的思想和适用场景,不仅能够授读者以解决问题之“鱼”,更能够授其分析问题之“渔”本书面向的读者我期望所有的 Android应用开发者都能够从本书中获益。对于 Android初学者而言,可以着重阅读本书对 Android设计思想、组件机制、UI框架的介绍,增强对 Android底层机制的理解,这对于日后开发更高效、可靠的 Android应用,必将有所裨益。而对于具有丰富 Android开发经验、对 Android基础框架有很深认识的资深开发者而言,可以在本书中寻找针对具体问题给出的一些解决策略,相信这些策略会对解决开发中的实际问题有所帮助。I如何阅读本书从本书的结构来看,前三部分包含的内容对于大部分开发者都适用,可以逐节进行阅读;而第四部分包含的内容则可以结合具体问题有选择地进行阅读。本书在介绍内容的过程中,会涉及 Android中的具体Java类,在首次提及时会使用完整的类名进行描述,如 android app. Activity,而在之后再次提及时则会略去全部的包信息,仅使用类名,如 activity,以节约篇幅便于阅读。与之类似,本书会将一些英文的专有名词翻译成中文,在首次提及时会使用中英文对照的方式,如界面组件( Activity),而再次涉及时则会直接使用中文名称,如界面组件。本书几乎没有完整的代码实例〔具体的实例来源会给出对应的链接或描述),只有从中截取并改良过的代码片段,其描述风格如下:/这是一段示例代吗,在代码的重要位置,会用注释给出解释String h11。="He110,";/}重要的变重、函数会用粗体裘示String user name= Gettsermame};//一些虚拟的函数、变量,会用斜体表示/一些嘻去的实現蛔节,会用省略号表示此外,本书会穿插一些小贴士,提供相关联的知识内容,小贴士的格式形如小贴士这是一则小贴士,所谓小贴士,就是对相关内容进行扩展介绍,或者是加入一些个人的理解。资源及勘误由于个人能力的局限,虽已竭尽所能,但在本书中对于一些问题的理解难免会有所纰漏,给出的一些解决方案也可能会有缺陷,敬请读者海涵。如在阅读过程中发现问题或者有所疑问需要讨论,可发邮件至我的邮箱°,所有关于本书内容的勘误会在个人博客。上不断更新。曰作者邮箱:duguguiyur@gmail.com弓作者博客:htp:l/ flyvenus.nct.致谢两年前的一天,本书的策划编辑杨福川在我的博客上看到了本书最雏形的一些文字,便极力邀请并最终促成了这本书。感谢福川在两年多的时间里一直鼓励着我,容忍着我无限期的“跳票”,帮我整理思路继续前行,感谢他和他的同事白宇、王晓非、曾珊帮我打磨每一行文字,整理每一张图片,没有他们的专业和坚持就不会有本书的最终完稿,感谢你们,感谢机械工业出版社。也要感谢我的前东家网易有道,是它给我机会来开发诸如有道词典这样拥有大量用户的 Android应用,在这个过程中我积累了大量的实践经验,这是我能够完成本书的技术基础。更要感谢豌豆实验室°和所有的豌豆们,这是我正为之奋斗的公司和一起战斗的同事们,在这里我不仅开拓了技术视野,了解了更丰富的 Android技术,更重要的是,让我体会到了什么是为了理想而共同奋斗,这是鞭策我不断前进的动力。还要感谢那些和我一起写 Android代码的朋友们,徐岚、阳光元、王健飞、吴淼伟……那些我写下你们解掉的Bug,都让我从中学到了新的知识。当然,一定要感谢我的家人,我的父母每周都会问我:“书写得怎么样了?早点休息,别太辛苦!”我想说,有你们的支持,我永远不会辛苦。感谢我的妻子张佳,本来我想拿着这本书作为我们的结婚礼物,却未曾想到,待到出版时我们已然是老夫老妻白网易有道是网易旗下搜索引擎,网址是;htp:/www.youdao.com豌豆实验室是创新工场早期孵化的创业公司,出品了 Android手机助手豌豆英,网站是;htp:∥www.wandoujia.comVIII了,两年间你一直鼓励我、帮助我完成此书,感谢有你,一直陪伴在你身边,是我能为你做的。最后,感谢所有即将阅读此书的朋友们,如果有人能从此书获益,将是我莫大的欣慰。范怀宇目录前言致谢第1章 Android的系统架构/1.1 Android系统架构概况/21.1应用层/41.1,2框架层/51.1,3运行时/51.14核心类库/71.5硬件抽象层和 Linux内核门71.2 Android的核心功能模块/81.2.1界面框架/1.2.2数据存储191.2.3网络通信/01.2.4地理信息/11.2.5图形和多媒体处理/11126外部设备/21.2.7特色功能模块/13X13 Android的架构特征和设计思想/1313.1平台开放性/141,3,2基于组件的应用设计/141.3,3基于阿络服务的平台/514小结/15第2章 Android源代码的下载和编译/162.1 Android源代码的获取和编译/72.1.1环境搭建/182.1,2源代码获取/82.1.3源代码的鳊译/212.2 android源代码结构/222.2.1框架层源代码目录 frameworks/222.2.2应用层源代码目录 packages/242.2.3其他源代码目录/2423 Android源代码的阅读和编辑12523.1用 Eclipse阃读源代码/2523.2反馈Bug/2623.3提交修改!2724小结/27第3章 Android组件模型解析/2831基于 Mashup的应用设计/293.1.1 Android中的 Mashup/293.1.2基于 Mashup的 Android应用模型/30313基于 Mashup的应用架构特征/3232界面组件 Activity解析/34321界面组件的功能和特征/34322界面组件的开发/353.2.3界面组件的数据结构/39
用户评论