具体描述
第1章简要介绍了Android,包括它是什么,以及它如何适应当前的移动开发。然后详细地讲述了Android作为一个开放平台能够提供什么功能,并解释了它为什么是一个创建移动应用程序的良机。
第2章讲述了移动开发的一些最佳实践,并解释了如何下载AndroidSDK和开始开发应用程序。该章同时也介绍了Android开发工具,并说明了如何从头创建新的应用程序。
第3-6章深入地探讨了基本的Android应用程序组件。首先讲述了组成Android应用程序和它的生命周期的每个部分,在介绍“活动”内容及其生存期与生命周期之前,将简要介绍应用程序清单和外部资源。
之后将学习如何使用布局和View创建用户界面,并且还将了解在应用程序组件之间执行动作和发送信息的Intent机制。接着将介绍Intemet资源,再后详细地讲述了数据存储、检索和共享。读者在此将了解首选保存机制、文件处理和数据库。在这个部分的最后还对如何使用内容提供器来共享应用程序数据进行了讲解。
第7~10章涉及到了较为高级的主题。首先介绍了地图以及基于位置的服务,接着介绍了服务、后台线程和Notification的用法。
接着介绍了Android的通信功能,包括通过即时通信和SMS来发送和接收消息。然后是有关硬件的内容,包括媒体录制及播放、摄像头、加速计和定位传感器。第10章的最后介绍了通话和网络硬件,包括通话API、蓝牙和网络管理(包括WiFi和移动数据连接)。
第11章介绍了几个高级开发主题,其中包括安全、IPC、高级图像技术以及用户与硬件的交互。
作者简介
RetocMeier出生于澳大利西南的珀斯市,1现居伦敦
Reto是一位经验丰富的软件开发人员,2拥有逾10年的GUI程序架构.c设计和开发经验.a他在涉足IT行业前曾从事过海洋石油和天然气开发以及金融工作.
Reto始终不渝地追求掌握新技术,3从2007年Android发布之初Reto就迷恋上了此项技术.a他利用业余时间研究包括WPF在内的多种开发平台以及Google的各种开发工具.
详情请访问Reto的个人网站RadioactiveYak,4网址是http://blog.3radioactiveyak.3com.a4a
目录信息
1.1 一些背景信息
1.1.1 不远的过去
1.1.2 未来的前景
1.2 对Android的误解
1.3 开放的移动开发平台
1.4 自带的Android应用程序
1.5 Android SDK功能
1.5.1 对包括摄像头、GPS和加速计在内的硬件的访问
1.5.2 自带的Google地图、地理编码和基于位置的服务
1.5.3 后台服务
1.5.4 SQLite数据存储和检索数据库
1.5.5 共享数据和应用程序间通信
1.5.6 使用Google Talk的P2P服务
1.5.7 扩展的数据支持和2D/3D图形
1.5.8 优化的内存和进程管理
1.6 开放手机联盟简介
1.7 运行Android的环境
1.8 从事Android开发的原因
1.8.1 推动Android普及的因素
.1.8.2 Android的独到之处
1.8.3 改变移动开发格局
1.9 开发框架简介
1.9.1 开发包中的资源
1.9.2 理解Android软件栈
1.9.3 Dalvik虚拟机
1.9.4 Android应用程序架构
1.9.5 Android库
1.9.6 高级Android库
1.10 小结
第2章 开始入手
2.1 Android开发
2.1.1 开始前的准备工作
2.1.2 创建第一个Android活动
2.1.3 Android应用程序的类型
2.2 面向移动设备的开发
2.2.1 关于硬件设计的考虑事项
2.2.2 考虑用户环境
2.2.3 Android开发
2.3 To-Do List示例
2.4 Android开发工具
2.4.1 Android模拟器
2.4.2 Dalvik调试监控服务(DDMS)
2.4.3 Android调试桥(ADB)
2.5 小结
第3章 创建应用程序和活动
3.1 Android应用程序的组成部分
3.2 程序清单简介
3.3 使用清单编辑器
3.4 Android应用程序生命周期
3.5 理解应用程序的优先级和进程状态
3.6 分离资源
3.6.1 创建资源
3.6.2 使用资源
3.6.3 To-DoList资源示例
3.6.4 为不同的语言和硬件创建资源
3.6.5 运行时配置更改
3.7 深入探讨Android活动
3.7.1 创建一个活动
3.7.2 活动生命周期
3.7.3 Android活动类
3.8 小结
第4章 创建用户界面
4.1 Android UI基本设计
4.2 View简介
4.2.1 使用View创建Activity(活动)用户界面
4.2.2 Android Widget工具箱
4.3 布局简介
4.4 创建新的View
4.4.1 修改现有的View
4.4.2 创建复合控件
4.4.3 创建定制的Widget和控件
4.4.4 使用定制的控件
4.5 创建和使用菜单
4.5.1 Android菜单系统简介
4.5.2 定义活动的菜单
4.5.3 动态更新菜单项
4.5.4 处理菜单选择
4.5.5 子菜单和上下文菜单
4.5.6 To-Do List示例续
4.6 小结
第5章 Intent、广播接收器、
Adapter和Internet
5.1 Intent简介
5.1.1 使用Intent来启动活动
5.1.2 使用Intent Filter来为隐式Intent提供服务
5.1.3 使用Intent Filter作为插件和扩展
5.1.4 使用Intent来广播事件
5.2 Adapter简介
5.2.1 Android提供的部分Adapter简介
5.2.2 使用Adapter绑定数据
5.3 使用Internet资源
5.3.1 连接到Internet资源
5.3.2 利用Internet资源
5.4 Dialog简介
5.4.1 Dialog类简介
5.4.2 使用活动作为对话框
5.5 创建一个地震查看器
5.6 小结
第6章 数据存储、检索和共享
6.1 Android中的数据保存技术
6.2 保存简单的应用程序数据
6.2.1 创建和保存preference
6.2.2 检索共享的preference
6.2.3 保存活动状态
6.2.4 为地震查看器创建一个Preference页
6.3 保存和载入文件
6.3.1 将静态文件作为资源添加
6.3.2 文件管理工具
6.4 Android中的数据库
6.4.1 SQLite简介
6.4.2 Cursor和内容值
6.4.3 使用Android数据库
6.5 内容提供器简介
6.5.1 使用内容提供器
6.5.2 本地Android内容提供器
6.5.3 创建一个新的内容提供器
6.5.4 创建和使用地震内容提供器
6.6 小结
第7章 地图、地理编码和基于位置的服务
7.1 使用基于位置的服务
7.2 使用Test Proyider构建模拟器
7.2.1 更新模拟位置提供器中的位置
7.2.2 创建一个应用程序来管理Test Location Provider
7.3 选择——个Location Provider
7.3.1 查找可用的提供器
7.3.2 根据要求标准查找提供器
7.4 确定自己所在的位置
7.4.1 “Where Am I”示例
7.4.2 追踪移动
7.4.3 更新“WhereAmI”示例中的位置
7.5 使用邻近提醒
7.6 使用Geocoder
7.6.1 反向地理编码
7.6.2 前向地理编码
7.6.3 对“Where Am I”示例进行地理编码
7.7 创建基于地图的活动
7.7.1 MapView和MapActivity简介
7.7.2 创建一个基于地图的活动
7.7.3 配置和使用MapView
7.7.4 使用MapController
7.7.5 对“Where Am I”示例使用地图
7.7.6 创建和使用覆盖(Overlay)
7.7.7 MyLocationOverlay简介
7.7.8 ItemizedOverlay和Overlayltem简介
7.7.9 将View固定到地图和地图的某个位置上
7.8 对Earthquake示例添加地图功能
7.9 小结
第8章 后台工作
8.1 服务简介
8.1.1 创建和控制服务
8.1.2 将活动和服务绑定
8.2 使用后台工作线程
8.2.1 创建新的线程
8.2.2 为GUI操作同步线程
8.2.3 将Earthquake Service移动到后台线程
8.3 创建一个Toast
8.3.1 定制Toast
8.3.2 在工作(worker)线程中使用Toast
8.4 Notification简介
8.4.1 Notification Manager简介
8.4.2 创建Notification
8.4.3 触发Notification
8.4.4 向Earthquake Monitor中添加Notiflcation
8.4.5 高级Notification技术
8.4.6 持续的和连续的Notification
8.5 使用Alarm
8.6 使用Alarm更新Earthquake
8.7 小结
第9章 P2P通信
9.1 Android即时消息简介
9.1.1 使用GTalk服务
9.1.2 和GTalk服务绑定
9.1.3 建立GTalk连接,开始一个IM会话
9.1.4 在线状态和联系人列表简介
9.1.5 管理聊天会话
9.1.6 发送和接收数据信息
9.2 SMS简介
9.2.1 在应用程序中使用SMS
9.2.2 发送SMS信息
9.2.3 监听SMS消息
9.2.4 紧急响应的SMS示例
9.2.5 紧急响应自动化
9.3 小结
第10章 访问Android硬件
10.1 使用媒体API
10.1.1 播放媒体资源
10.1.2 录制多媒体
10.2 使用摄像头
10.2.1 控制摄像头设置
10.2.2 使用摄像头预览
10.2.3 照相
10.3 Sensor Manager简介
10.4 使用加速计和指南针
10.4.1 加速计介绍
10.4.2 检测加速度的改变
10.4.3 创建一个速度计
10.4.4 确定方向
10.4.5 创建指南针和地平仪
10.5 Android电话功能
10.5.1 打电话
10.5.2 监控电话状态和电话活动
10.5.3 监控数据连通性和活动
10.5.4 访问手机的属性和状态
10.5.5 控制电话
10.6 使用蓝牙
10.6.1 蓝牙服务介绍
10.6.2 控制本地蓝牙设备
10.6.3 发现并配对蓝牙设备
10.6.4 管理蓝牙连接
10.6.5 使用蓝牙进行通信
10.6.6 使用蓝牙耳机
10.7 管理网络和Wi-Fi连接
10.7.1 监控和管理Internet连接
10.7.2 管理活动的连接
10.7.3 管理你的Wi-Fi
10.8 控制设备震动
10.9 小结
第11章 Android高级开发
11.1 Android的安全性
11.1.1 Linux内核安全
11.1.2 权限简介
11.1.3 声明和实施权限
11.1.4 为广播Intent实施权限
11.2 使用AIDL来支持服务IPC
11.3 使用Internet服务
11.4 构建内容丰富的用户界面
11.4.1 使用动画
11.4.2 使用主题来为应用程序添加皮肤
11.4.3 高级画布绘图
11.4.4 SurfaceView简介
11.4.5 创建交互式控件
11.5 小结
· · · · · · (收起)
读后感
很不错的android书,比较全面,但是代码有不少小毛病,可能是翻译过程中的问题。 p33 嵌入式和移动式设备的限制使得开发人员失去了摩尔定律的优势。 p174 细节错误还挺多 涉及了很多方面,但详略有点不均衡。 p355 对话框是系统级的,不能轻易使用。 p700 注重质量而非功能。 举报
市面上的很多书籍都是developer.android.com上guide的简单翻译,例子照抄android sdk中的sample,而且翻译质量还不怎么样,读这些书不如直接去官网上看guide。 本书基本覆盖了android app开发的方方面面,把android程序开发的重要组件都讲明白了,不像某些国内作者的书,看完了...
市面上的很多书籍都是developer.android.com上guide的简单翻译,例子照抄android sdk中的sample,而且翻译质量还不怎么样,读这些书不如直接去官网上看guide。 本书基本覆盖了android app开发的方方面面,把android程序开发的重要组件都讲明白了,不像某些国内作者的书,看完了...
初学Android就看了这本书,看完算是整体了解了Android应用程序的系统结构和执行原理,但是从出版社网站上down下来的代码有很多问题,最基本的一个所有工程的最低API级别都是1。不知道国内怎么翻译的,感觉不管啥书一经清华大学出版社的手质量就哗哗下降
市面上的很多书籍都是developer.android.com上guide的简单翻译,例子照抄android sdk中的sample,而且翻译质量还不怎么样,读这些书不如直接去官网上看guide。 本书基本覆盖了android app开发的方方面面,把android程序开发的重要组件都讲明白了,不像某些国内作者的书,看完了...
用户评价
这本书的出现,简直就是我Android开发之路上的“神来之笔”。之前我虽然在做Android开发,但总感觉基础还不够扎实,很多进阶的概念,比如Binder、AIDL、线程池的深入理解,还有内存优化、性能调优的真正门道,总是让我觉得似懂非懂,或者遇到了实际问题就束手无策。看了《Android高级编程》之后,我才真正明白,原来很多我们在日常开发中习以为常的现象,背后都有如此精巧的设计和复杂的机制。比如,它对Android系统架构的剖析,从Linux内核到Framework层,再到应用层,层层递进,让我对整个Android生态有了宏观而清晰的认识。特别是Binder的讲解,我之前一直觉得它就是一个“进程间通信”的工具,看完这本书,我才了解到它背后的Binder驱动、Binder线程池、ServiceManager等等,这些概念的梳理和解释,就像是为我打开了一扇新世界的大门。让我对Android的进程隔离、服务管理有了更深层次的理解,也为我后续理解一些复杂的跨进程通信场景打下了坚实的基础。这本书没有回避那些令人望而生畏的底层细节,而是用一种抽丝剥茧的方式,将它们一一展现在读者面前,并且结合了大量的代码示例和图示,使得即使是像我这样对底层技术不是特别擅长的开发者,也能逐步理解并掌握。读完这本书,我感觉自己在面对一些疑难杂症的时候,不再是盲目地尝试,而是能够从更深的层次去分析问题,找到根本原因,这对我解决实际开发中的挑战提供了极大的信心和帮助。
坦白说,这本书的阅读门槛确实不低,但正因为如此,它才显得格外珍贵。它不是那种“看完立刻就能上手写出漂亮UI”的书,而是需要你沉下心来,仔细思考,反复琢磨。我记得在阅读关于Android的组件生命周期和状态管理那部分时,我花了很长时间去理解Activity、Fragment、Service之间复杂的交互和状态传递。这本书并没有简单地告诉你生命周期方法是什么,而是深入分析了它们在不同场景下的调用时机,以及它们与Android系统UI渲染、进程管理等底层机制的关联。比如,它详细解释了Activity的`onSaveInstanceState`和`onRestoreInstanceState`是如何工作的,以及它们在屏幕旋转、进程被杀死后重建时的作用,这让我对Activity的“持久化”有了更深的理解。同时,它也对Fragment的生命周期做了详细的讲解,并且分析了Fragment与Activity生命周期的耦合关系,这对于那些经常使用Fragment进行UI开发的开发者来说,简直是福音。在性能调优方面,它提供的那些关于CPU使用率、GPU渲染、网络请求优化等方面的深入分析,让我能够更科学地去定位和解决性能问题,而不是凭感觉去猜测。总之,这本书更像是一本“内功心法”,教会你如何从根本上理解Android,如何构建稳定、高效、可维护的应用程序。
我一直觉得,真正的“高级”并非是堆砌复杂的API,而是对基础原理的深刻洞察和灵活运用。很多开发者可能熟悉RxJava、Kotlin协程这些现代化的异步编程范式,但《Android高级编程》却带我回溯到了Android最初的异步处理机制——Handler、Looper、MessageQueue。它用非常清晰的逻辑,解释了这套机制是如何工作的,为什么它能够有效地处理UI线程和工作线程之间的通信,以及如何在实际开发中利用它来编写高效的UI更新和后台任务。我之前虽然用过Handler,但总觉得不够系统。读了这本书,我才明白,原来Looper的无限循环、MessageQueue的链表结构、Message的处理分发,每一个环节都设计得如此巧妙。它还结合了Message的内存复用、IdleHandler的应用等进阶技巧,让我对Android的事件驱动模型有了更全面的认识。此外,书中对线程池的讲解也非常深入,不仅仅停留在Java原生的ThreadPoolExecutor,还结合Android的实际场景,讨论了如何在UI线程、后台线程、IO线程之间合理分配任务,避免线程过多导致系统资源耗尽,或者线程过少导致任务积压。这些内容,让我感觉自己的Android开发功底又上了一个台阶,能够更从容地应对各种复杂的并发和异步场景。
这本书最大的亮点在于,它并没有把“高级”停留在抽象的概念层面,而是通过对Android核心组件和运行机制的深入剖析,让你真正理解“为什么”和“如何做”。我一直对Android的动画系统非常感兴趣,但总是觉得理解不够透彻。看了这本书关于View的绘制流程(measure, layout, draw)以及View的事件分发机制的讲解,我才明白,原来动画的本质就是不断地更新View的属性,并由系统负责在合适的时机重新绘制。它详细解释了Choreographer如何调度动画帧,以及ValueAnimator、ObjectAnimator这些属性动画的工作原理,让我能够更灵活地创建和控制各种复杂的动画效果。在性能优化方面,书中关于UI渲染性能的讲解,比如如何避免过度绘制(Overdraw)、如何使用ConstraintLayout来优化布局层级、如何利用Profile GPU Rendering工具来分析渲染卡顿,都非常实用。它不仅仅是告诉你“要优化”,而是告诉你“怎么优化”,以及“为什么这样优化能起作用”。读完这本书,我感觉自己在面对一些UI卡顿、动画不流畅的问题时,不再是束手无策,而是能够通过分析渲染帧率、检查布局结构,找到问题的根源。
阅读《Android高级编程》,就像是在为我的Android开发知识体系打下坚实的“地基”。很多时候,我们在学习新的框架或者技术时,都会遇到一些底层的概念,比如Android的IPC(Inter-Process Communication)机制,也就是Binder。在这本书中,关于Binder的讲解,让我耳目一新。它不仅仅介绍了Binder的调用流程,更深入地分析了Binder驱动、Binder Binderized(Binder化)的Server和Client、Binder线程池等核心组件。我之前一直觉得,Android的进程间通信就是Binder,但看完这本书,我才了解到Binder的背后有着如此复杂的实现和精妙的设计。它让我明白,为什么Android能够实现高效、安全的进程间通信,以及Binder是如何保证了数据的序列化和反序列化。此外,书中关于Android的四大组件(Activity, Service, BroadcastReceiver, ContentProvider)的深入剖析,也让我对它们的工作原理有了更全面的认识。它详细解释了它们之间的生命周期、启动方式、数据传递等关键信息,以及它们在Android系统中的角色和定位。这对于我理解Android应用的架构设计,以及如何合理地组织和管理应用中的各个组件,都提供了极大的帮助。
我一直认为,优秀的开发技术书籍,不仅仅是知识的传授,更是思维方式的引导。这本书的作者在讲解Android的内存管理时,不仅仅停留在简单的内存泄漏检测,而是深入分析了Dalvik/ART虚拟机是如何管理内存的,包括堆、栈、方法区等区域的划分,对象的分配和回收机制,以及Finalizer、WeakReference、SoftReference等引用类型的具体作用。我记得在阅读关于内存泄漏的章节时,我才真正理解了为什么某些对象(比如Activity的Context)在被后台线程持有引用时,会导致整个Activity无法被垃圾回收,从而引起内存泄漏。这本书提供的那些关于内存分析工具(如LeakCanary、Memory Profiler)的使用方法,以及如何结合代码逻辑来分析和解决内存泄漏问题,都非常实用。它让我明白,解决内存问题,需要从理解底层机制入手,而不是仅仅依赖工具。此外,书中关于Android的线程模型和并发编程的讲解,也让我受益匪浅。它详细解释了Android特有的Handler、MessageQueue、Looper机制,以及如何利用线程池来管理后台任务。这些内容,让我能够更有效地编写多线程代码,避免线程安全问题,提高程序的响应速度和用户体验。
这本书的价值,远不止于提供技术知识,更在于它塑造了一种解决问题的思维方式。我一直以来都认为,学习编程,尤其是Android开发,不能仅仅停留在API的调用层面。很多时候,我们遇到的性能瓶颈、内存泄漏、ANR(Application Not Responding)等问题,都不是简单的代码逻辑错误,而是与Android系统本身的运行机制、资源管理策略息息相关。《Android高级编程》在这方面做得尤为出色。它没有仅仅罗列各种优化技巧,而是深入分析了Android虚拟机(Dalvik/ART)的工作原理,讲解了垃圾回收(GC)机制的细节,如何避免内存泄漏,以及如何利用工具(如Traceview、Profiler)进行性能分析。我尤其喜欢它对内存管理的讲解,从对象生命周期、引用类型到内存分配和回收,都做了详尽的阐述。这让我能够更好地理解为什么会出现OOM(OutOfMemoryError),以及如何有效地预防和解决。书中关于多线程并发编程的讨论,也让我受益匪浅。Android开发中,多线程是绕不开的话题,但如何安全高效地使用多线程,避免线程安全问题,如何合理地管理线程池,防止资源滥用,这些都是需要深入理解的。这本书提供的那些关于线程同步、锁机制、Future模式等知识,结合Android特有的Handler机制,让我对并发编程有了更深刻的认识,也能够写出更健壮、更高效的多线程代码。
这本书最大的价值在于,它能够让你从一个“使用者”转变为一个“理解者”。在Android开发过程中,我们经常会遇到一些系统级的服务,比如LocationManager、WindowManager、PackageManager等。这些服务虽然我们日常开发中会直接调用,但很少去深究它们是如何工作的。《Android高级编程》在这方面就做得非常出色。它深入剖析了Android系统服务的实现原理,比如它如何通过Binder机制与应用层进行交互,以及它在系统中的作用和地位。我记得在阅读关于ContentProvider的章节时,我才真正理解了它在Android跨进程数据共享中的重要性,以及它如何通过AIDL(Android Interface Definition Language)来实现跨进程的数据访问。这本书还详细解释了AIDL的语法和使用方法,以及它在Binder通信中的作用。这对于我理解Android的IPC机制,以及如何构建跨进程通信的服务,都有着至关重要的意义。此外,书中关于Android的资源管理和打包机制的讲解,也让我对APK文件的结构、资源文件的加载和解析有了更深入的了解。这对于我进行一些应用瘦身、资源混淆等优化工作,都提供了宝贵的知识支持。
如果你想成为一个能够真正解决Android问题的开发者,而不是一个只会调用API的“搬砖工”,那么《Android高级编程》绝对是你的不二之选。我之前也看过不少Android相关的书籍,但很多都停留在UI开发、列表优化这些比较表面的层面。这本书则深入到了Android Framework的底层,比如Context的实现原理,LayoutInflater是如何解析XML布局的,Bitmap是如何加载和缓存的。我记得在阅读关于Context的讲解时,我才真正理解了ApplicationContext、ActivityContext、ServiceContext之间的区别和适用场景,以及它们在内存管理和生命周期上的不同。这对于我理解一些插件化、热修复的原理,或者在一些特殊场景下正确地使用Context,都有着至关重要的作用。书中对Bitmap的加载和内存管理的讲解,更是让我大开眼界。它详细介绍了BitmapConfig、inSampleSize、inPreferredConfig等参数的含义和作用,以及如何通过合理地采样和配置来避免OOM。这对于我们这些经常处理大量图片的App开发者来说,无疑是雪中送炭。这本书没有回避那些令人望而生畏的底层代码,而是用一种非常系统和易懂的方式,将它们展现在我们面前,让我们能够真正地知其然,更知其所以然。
这本书带给我的,是一种“举一反三”的学习能力。在学习Android开发的过程中,我们往往会遇到一些看似是新概念、新框架的东西,但如果能够深入理解Android底层的运行机制,很多新事物都能触类旁通。《Android高级编程》在这方面做得非常出色。它在讲解SurfaceFlinger、Hardware Composer(HWC)时,并没有止步于描述它们的功能,而是深入分析了它们在Android图形渲染管线中的作用,以及它们如何与Surface、Window、Layer等概念协同工作,完成屏幕的最终显示。这让我对Android的图形渲染流程有了更宏观和深入的理解,也为我后续学习OpenGL ES、Vulkan等图形API打下了基础。此外,书中对Android的消息队列和事件分发机制的阐述,也让我能够更清晰地理解各种异步任务的执行顺序,以及如何处理用户交互事件。例如,它详细解释了InputDispatcher、InputReader、InputWindowHandle等组件在用户触摸事件传递过程中的作用,以及它们与View的onTouchEvent、onClick等方法的关联。这些底层细节的理解,让我能够更自信地处理各种复杂的事件分发和UI交互逻辑,并且在遇到问题时,能够更准确地定位到问题发生的环节。
pass
这本书还真是适合初学
图书馆能借到的android书就这一本了,可见现在android有多火。读过之后,感觉内容一般般,有些章节还不如网上的博客介绍的多,不算高级编程,算中级吧。
学习Android看的第二本书,老实说看第二本时候已经不太认真了,开始不踏实想跑了。。。始终觉得中文翻译的版本有些蛋疼,看英文还是爽一些
图书馆能借到的android书就这一本了,可见现在android有多火。读过之后,感觉内容一般般,有些章节还不如网上的博客介绍的多,不算高级编程,算中级吧。