具体描述
编辑推荐
《Android 4.X从入门到精通》具有全面讲解Android 4.X应用开发技巧、Android 4.X应用开发参考指南、随书源代码可以直接从网站下载等特点。
内容简介
随着Android系统的广泛应用,消费者对移动设备应用程序的需求也变得多元化,为了帮助国内开发人员快速掌握Android应用开发技术,获取更好的就业机会,作者结合自身移动应用开发项目经验,基于Android SDK 4.O Ice Cream Sandwich(冰激凌三明治)和4.1 Jelly Bean(果冻豆)编写了《Android 4.X从入门到精通》。
《Android 4.X从入门到精通》共分13章,深入浅出地讲解了Android应用开发的各个方面。全书在讲解过程中穿插了大量的实例(实例源代码可从前言提供的网址下载),帮助读者在开发的道路上快速入门,获得编程能力的提高。
《Android 4.X从入门到精通》在编写过程中综合考虑了自学与教学两方面因素,不仅适合高校教学、学生自学,同时也适合有一定开发经验的程序员作为技术参考使用。
作者简介
李波,毕业于中国科学院沈阳自动化研究所,博士,讲师,研究方向为虚拟现实、高性能计算、移动开发等技术。
史江萍,毕业于东北大学,硕士,具有丰富的移动应用开发项目经验。
王祥凤,毕业于东北电力大学,硕士,具有丰富的移动应用开发项目经验。
内页插图
目录
第1章 Android系统概述
1.1 智能手机
1.1.1 什么是智能手机
1.1.2 智能手机操作系统
1.2 什么是Android
1.2.1 Android的历史
1.2.2 Android的发展
1.2.3 Android的优点
1.3 Android系统架构
1.3.1 应用程序层(Applications)
1.3.2 应用程序框架层(ApplicationFramework)
1.3.3 系统库(Libraries)
1.3.4 Android运行环境(AndroidRuntime)
1.3.5 Linux内核(LinuxKernel)
1.4 小结
1.5 思考题
第2章 搭建Androld开发环境
2.1 系统需求
2.2 软件安装
2.2.1 JDK的安装
2.2.2 AndrOjdSDK
2.2.3 Eclipse和ADT
2.2.4 创建AVD
2.2.5 AVD与真机的区别
2.3 AndroidSDK介绍
2.3.1 AndroidSDK目录结构
2.3.2 Android.jar
2.3.3 AndroidAPI核心包
2.3.4 AndroidAPI扩展包
2.4 创建第一个Android应用程序
2.4.1 创建HeIIoAndroid工程
2.4.2 编写代码,
2.4.3 运行应用程序
2.4.4 工程文件结构解析
2.5 调试程序
2.5.1 设置断点
2.5.2 调试
2.6 小结
2.7 思考题
第3章 Android应用程序结构
3.1 应用程序基本组成
3.1.1 ACljVity
3.1.2 Senrvece
3.1.3 BroadcastReceiver
3.1.4 ContentProvider
3.1.5 lntenl
3.2 ACtiVity
3.2.1 Activity的生命周期
3.2.2 Activity的创建
3.2.3 启动ActMty
3.2.4 关闭Activity
3.2.5 Activity数据传递
3.3 资源
3.4 AndroidManifest.xml
3.5 小结
3.6 思考题
第4章 开户界面开发
第5章 电话和短信应用程序开发
第6章 多媒体开发
第7章 数据存储
第8章 网络编程
第9章 位置服务
第10章 绘图
第11章 Android的国际化与本地化
第12章 应用程序发布
第13章 Android4.1 来了,4.2 也来了
前言/序言
自2007年5月Android开源手机平台问世以来,已经经历了五年的发展。五年间,基于Android平台的智能手机迅速占领市场,成为当前最受欢迎的手机操作系统。与之伴随的基于Android操作系统的应用程序需求多元化,Android开发技术成为市场求职的新宠。
为了帮助国内开发人员快速掌握Android开发技术,获取更好的就业机会,笔者基于Google公司2011年10月发布的Android SDK 4.0 (API Level 14),兼顾2012年6月28日发布的Android SDK 4.1 Jelly Bean(果冻豆)编写了本书,希望能够帮助广大读者在Android开发的道路上入门并且获得提高。
本书共分为13章,由浅入深地讲解了Android开发的各个方面。本书在讲解过程中穿插了大量实例,希望借此能帮助读者更好地理解Android开发的过程。本书的前3章为本书的基础,系统地介绍了Android系统的诞生和发展的过程、Android的系统框架、Android开发环境的搭建以及Android应用程序的基本组件,并且着重讲解了Android系统中人机交互的基本组件Activity的基本知识。第4章讲解了Android开发过程中界面开发的相关知识,包括在用户界面设计过程中常用的布局和组件,以及Android处理人机交互事件的方法。第5章讲解了Intent的基本知识,并利用Intent实现了电话和短信应用程序开发功能。第6章主要讲解了Android系统下的多媒体开发技术,实现了音频和视频的播放。通过Service和BroadcastReceiver实现了后台音频播放的相关功能,通过Android提供的硬件编程API实现了自己的录像和拍照应用程序。第7章讲解了Android系统提供的四种数据存储方式,分别为SharedPreferces、文件存储方式、数据库存储方式和ContentProvider。活用这些数据存储方式,实现数据持久化,是应用程序开发过程中不可回避的问题。
……
Android 4.X 深度解析:系统架构、核心组件与高级开发实践 本书旨在为读者提供一个全面而深入的Android 4.X系统理解,从其底层的架构设计到上层的应用开发,层层递进,力求构建一个完整且扎实的知识体系。我们不再局限于“入门”的表面,而是深入“精通”的实质,聚焦于Android 4.X这一经典且具有里程碑意义的版本,探索其核心的运作机制、重要的开发模式以及解决实际开发中常见挑战的策略。 第一部分:Android 4.X 系统架构的基石 在这一部分,我们将首先剖析Android 4.X的整体架构。这不仅仅是简单罗列组件,而是要理解它们之间如何协同工作,形成一个强大且灵活的移动操作系统。 Linux 内核:Android 的心脏与灵魂 深入探讨Linux内核在Android系统中的作用,不仅仅是作为一个进程管理和内存管理的载体,更重要的是它提供了驱动程序、电源管理、Binder IPC机制等关键功能。我们将分析Android如何利用Linux内核的特性,例如Linux的内存管理机制,如OOM Killer(Out-of-Memory Killer)如何影响应用程序的生命周期,以及文件系统(如YAFFS2或Ext4)在Android设备存储中的重要性。 我们将详细解析Linux Binder IPC(Inter-Process Communication)在Android中的地位,它不仅仅是进程间通信的手段,更是Android系统中各种服务(如Activity Manager Service, Window Manager Service)与应用程序组件之间高效、安全通信的核心。理解Binder的工作原理,包括Service Manager、Binder Driver、Binder Kernel Driver以及User Space Binder Driver,对于理解Android的整体设计理念至关重要。 Android Runtime (ART) 与 Dalvik 虚拟机:代码执行的双生子 虽然Android 4.X 主要使用Dalvik虚拟机,但我们也会简要介绍ART(Android Runtime)的发展背景,为读者理解后续Android版本的演进奠定基础。我们将深入剖析Dalvik虚拟机的设计,包括其指令集、字节码格式、内存管理(堆、栈、垃圾回收机制)以及JIT(Just-In-Time)编译器的作用。 我们将重点分析Dalvik是如何优化Java代码在移动设备上的执行效率的,例如其寄存器架构、方法调用机制以及对象创建过程。通过对比分析,读者可以更清晰地理解Dalvik与标准Java虚拟机之间的差异,以及这些差异如何适应移动平台的资源限制。 硬件抽象层 (HAL):连接硬件与软件的桥梁 HAL是Android系统实现硬件无关性的关键。我们将详细讲解HAL的架构,包括其接口定义(IDL)、实现以及如何通过Binder IPC与上层框架通信。 我们将选取几个典型的HAL模块进行深入分析,例如Camera HAL、Audio HAL、Sensor HAL等,理解它们如何封装底层硬件驱动,并向上层提供标准化的API。通过了解HAL,读者能更深刻地理解Android系统在不同硬件平台上保持一致性的技术秘密。 原生 C/C++ 库:支撑系统运行的基石 Android系统依赖大量C/C++编写的原生库,例如SQLite、WebKit、OpenGL ES、Stagefright Multimedia Framework等。我们将讲解这些库在Android中的作用,以及它们如何与Java层框架进行交互。 我们将重点关注Stagefright多媒体框架,它是Android处理音频和视频的关键组件。理解Stagefright的组件构成,如OMX(OpenMAX)组件、Parser、PlayerEngine等,对于开发涉及多媒体功能的应用程序至关重要。 Java API 框架:构建应用世界的基石 这是开发者最常接触的层次。我们将详细介绍Android Framework的核心组件,如Activity Manager, Package Manager, Window Manager, Content Providers, Services等,以及它们提供的API。 我们将深入理解Activity生命周期管理、Intent机制、Fragment的使用、Broadcast Receivers、Service的创建与管理,以及Content Providers的数据共享模式。重点分析Android 4.X在这些方面的特性和改进。 应用层:用户与Android交互的窗口 我们将简要介绍用户在应用层如何与Android系统交互,以及应用开发的基本流程。 第二部分:Android 4.X 核心组件深度解析 这一部分将聚焦于Android 4.X中几个最核心、最常用,也最能体现其设计思想的组件,进行深度剖析。 Activity 与 Fragment:用户界面的核心构建块 Activity 的生命周期与状态管理: 深入解析Activity的onCreate, onStart, onResume, onPause, onStop, onDestroy等回调方法,理解Activity在不同状态下的行为。重点分析Activity的实例状态保存与恢复机制,以及如何在屏幕旋转、内存不足等情况下保证用户数据的完整性。 Fragment 的设计理念与应用: 详细讲解Fragment的引入,以及它如何解决Activity在多屏幕适配和UI复用上的难题。深入分析Fragment的生命周期,Fragment与Activity的交互,以及Fragment的懒加载、Fragment的嵌套等高级用法。我们将对比分析Fragment在Android 4.X与早期版本中的差异和优化。 Activity 栈的管理: 理解Activity栈的工作原理,以及finishAffinity()、clearTaskOnLaunch等方法在管理Activity栈时的作用。 Intent:组件间通信的强大引擎 显式 Intent 与隐式 Intent: 详细讲解如何使用Intent在组件之间启动Activity、启动Service、发送Broadcast。重点分析隐式Intent的匹配机制,包括Action, Category, Data, Type等属性,以及如何通过Intent Filter来声明组件的能力。 Intent 的 Flag: 深入解析Intent的各种Flag(如FLAG_ACTIVITY_NEW_TASK, FLAG_ACTIVITY_CLEAR_TOP等)如何影响Activity的启动行为和Activity栈的管理。 PendingIntent: 理解PendingIntent的作用,以及它在通知、Widget等场景下的应用。 Service:后台任务的守护者 Service 的生命周期与启动模式: 讲解startService(), bindService(), stopService(), unbindService()等方法的区别与联系,以及Service的onCreate, onStartCommand, onDestroy等生命周期回调。 Foreground Service: 介绍如何创建Foreground Service,以及它在需要用户持续感知且不易被系统回收的后台任务中的应用。 IntentService: 分析IntentService的设计,它如何简化Service中单线程处理后台任务的需求。 Broadcast Receiver:事件驱动的消息总线 Broadcast Receiver 的注册与接收: 讲解动态注册与静态注册Broadcast Receiver的方式。 系统广播与自定义广播: 分析Android系统提供的各种系统广播(如网络状态变化、电池电量变化等),以及如何发送自定义广播。 有序广播与广播优先级: 理解有序广播的工作原理,以及abortBroadcast()方法的作用。 Content Provider:数据共享的典范 Content Provider 的设计理念: 讲解Content Provider如何实现跨应用的数据共享,以及其URI、MIME Type等概念。 CRUD 操作: 详细讲解Content Provider的query(), insert(), update(), delete()方法,以及如何实现这些方法。 ContentResolver: 分析ContentResolver在访问Content Provider数据时的作用,以及Cursor的使用。 自定义 Content Provider 的实现: 提供一个完整的自定义Content Provider的开发示例。 第三部分:Android 4.X 高级开发实践与优化 在掌握了核心组件的基础上,本部分将聚焦于更高级的开发技巧、性能优化以及解决实际开发中遇到的棘手问题。 UI 绘制与布局优化: 自定义 View 的绘制流程: 深入理解View的measure(), layout(), draw()方法,以及如何创建高效的自定义View。 布局优化技巧: 分析include, merge, ViewStub等标签的作用,以及避免过度嵌套的布局方案。 高效的列表渲染: 深入讲解ListView和GridView的复用机制,以及Adapter的设计模式,并探讨RecyclerView(尽管在4.X时代尚未普及,但可作为未来方向的铺垫,或分析其设计思想的演变)的设计理念。 硬件加速与 GPU 渲染: 了解Android的硬件加速机制,以及如何利用OpenGL ES进行高性能图形渲染。 多线程与异步处理: 主线程(UI 线程)的重要性: 强调在UI线程执行耗时操作的危害,以及如何避免ANR(Application Not Responding)。 AsyncTask: 深入解析AsyncTask的原理,包括其线程池、任务发布和结果回调机制。 Handler、Message、Looper、MessageQueue: 详解Android的消息机制,理解Handler如何实现线程间的通信。 Thread 与 Runnable: 简要回顾Java多线程基础,并说明在Android中的应用。 并发与同步: 讨论Android中常用的并发控制手段,如synchronized, Lock等。 数据存储与持久化: SharedPreferences: 讲解SharedPreferences的适用场景,以及其读写操作。 SQLite 数据库: 深入讲解SQLite数据库在Android中的应用,包括Schema设计、SQL语句编写、事务处理,以及如何使用SQLiteOpenHelper进行版本管理。 文件存储: 分析内部存储、外部存储的读写权限和应用场景。 ORM 框架(例如 GreenDao 的早期版本或类似概念): 探讨使用ORM框架简化数据库操作的可能性,理解其设计思想。 网络编程与通信: HTTP 客户端: 深入分析Android中常用的HTTP客户端库,例如Apache HttpClient (在Android 4.X时代仍广泛使用) 或HttpURLConnection,并探讨其使用方法和注意事项。 JSON 与 XML 解析: 讲解常用的JSON和XML解析库,如Jackson、Gson、XStream等,以及它们的优缺点。 Socket 编程: 简要介绍Socket编程在Android中的应用场景。 性能调优与内存管理: 内存泄漏的检测与分析: 讲解如何使用Android Studio的Profiler、LeakCanary等工具检测和分析内存泄漏。 CPU 使用率优化: 分析如何通过代码优化、算法改进来降低CPU占用。 电量优化: 探讨Android系统对电量的管理机制,以及如何在应用开发中实现电量优化。 位图(Bitmap)的加载与管理: 重点分析Bitmap的加载、缩放、复用机制,以及如何避免OOM(Out Of Memory)问题。 进程间通信 (IPC) 深度探索: Binder 深入实践: 除了第一部分的原理讲解,本部分将通过实际案例,演示如何创建和使用Binder服务,以及Stub/Proxy模式在Binder通信中的应用。 AIDL (Android Interface Definition Language): 详细讲解AIDL的语法,以及如何利用AIDL跨进程调用远程服务。 Messenger: 介绍Messenger作为一种更轻量级的IPC机制,在简单场景下的应用。 其他重要主题: 权限管理: 讲解Android 4.X时代的权限模型,以及运行时权限的基本概念。 后台任务管理: 深入探讨JobScheduler(虽然在4.X时代不完善,但可以提及),AlarmManager等后台任务调度机制。 通知 (Notifications) 的高级用法: 讲解如何创建丰富的通知,包括自定义视图、Action按钮等。 Widget 开发: 介绍如何开发Android桌面小部件。 通过以上详细的内容划分,本书将引领读者循序渐进地掌握Android 4.X的精髓。我们不仅仅停留在“是什么”,更注重“为什么”和“怎么做”,力求让读者在理解Android系统的底层设计原理的同时,也能熟练运用各种开发技术解决实际问题,最终达到“精通”的目标。本书的每一章节都将包含大量的代码示例、图示分析和实战技巧,确保读者能够学以致用,在Android开发领域更上一层楼。