写点什么

书评:使用 Android SDK 构建应用,第 2 版

  • 2013-11-04
  • 本文字数:3113 字

    阅读完需:约 10 分钟

在最新版的 Android 开发者手册:使用 Android SDK 构建应用(第 2 版)一书中,作者 Ronan Schwarz Phil Dutson James Steele Nelson To 成功地向 Addison-Wesley 开发者书库系列添加了浓墨重彩的一笔。这本面向移动应用开发者的图书可以作为新手的权威指南。对于中级与专家级开发者来说,本书也将有助于他们增强自身的编程实践。

读者在学习如何编写自己的代码的同时还可以将书中的攻略、代码片段与用户界面布局快速应用到 Android 项目中以创建出自己的原始应用。

本书的一大特色就是指导读者如何使用 Android 基本的应用编程接口(API)来确保应用能够在各种碎片化的设备与不同的OS 版本上运行;回顾过去、立足现在、展望未来。作者还谈到了Android、 Linux 内核 Java 框架 Eclipse 集成开发环境之间的关系。

书中讲述了对 OS 做了怎样的修改使之能够在移动生态圈的舞台上大放异彩,移动设备具有更小的屏幕和有限的选项,并且在必要时需要使用私有的 Android 库。与 Swing Timer 等 Java 库及 X Windows 或 GNU C 库等典型的 Linux 工具不同,他们并不适合于在 Android 上编码。

从书中的第 1 章开始,读者就将深入到这个世界上最为流行的移动 OS 的具体细节当中。书中谈到了构成操作系统的必要文件,如何确保易丢失的闪存的安全性,他们由 6 个镜像构成:

  • Bootloader——在启动时开始装载启动镜像
  • Boot 镜像——内核与 RAMDisk
  • System 镜像——带有应用的 OS 平台
  • Data 镜像——在不同的权限模式下保存用户数据
  • Recovery 镜像——保存更新并重新构建文件
  • Radio 镜像——保存 Radio 栈文件

作者建议开发者深入理解硬件与他们所编写的代码之间的关系。他们强调不仅要考虑现有的智能手机和平板之间在内存与处理能力、屏幕尺寸、分辨率、前后摄像头上差别的重要性,还要考虑到现在或是未来将会运行在 OS 上的全新设备类型,比如说智能手表、训练设备、医疗设备、汽车,甚至是游戏机等,建议开发者们要尽可能编写设备中立的代码。

作者强调了在设计应用时能够把握全局的重要性。这意味着开发者应该能够清晰地认识到完成后的应用是什么样子的。这 4 位作者将他们专业的建议与经验都浓缩到了这本手册中。

他们建议在创建 Android 应用时使用 Eclipse IDE 来保证最佳的效果。

下面是一段示例攻略:

活动与意图 这项操作的步骤与上一个攻略类似:

  1. 在 Eclipse 中,选择 File → New → Android Application Project。
  2. 填写项目名,比如说 SimpleFragmentExample。
  3. 填写应用名,比如说 Example of Basic Fragments。
  4. 填写包名,比如说 com.cookbook.simplefragments。
  5. 将最低限度的 SDK 设为 API Level 11 或是 Android Honeycomb。

低版本 API 能够使用 Fragments 的前提是机器上要安装好额外的支持库。 7. 在 Create Activity 界面上,选择 MasterDetailFlow 作为起始点。
8. 命名条目,比如说 fruits。
9. 按下 Finish 按钮完成示例项目的创建。

探索该示例的任务就交给读者完成了,下面重点来谈谈 Fragments。Fragments 有自己的生命周期,它取决于宿主活动。由于在活动生命周期的任何时刻,我们都可以添加、显示、隐藏以及删除 Fragments,因此其存活周期要比其他组件短很多。类似于活动,Fragments 也有 onPause()、onResume()、onDestroy() 及 onCreate() 方法。 然而,值得注意的是 onCreate(Bundle) 是 Fragment 上所调用的第 2 个方法,第 1 个被调用的方法是 onAttach(Activity),它会发出现已连接到宿主活动的信号。这里可以调用活动的方法,然而系统并不保证活动已经完全完成了自身的初始化。只有在调用了 onActivityCreated() 方法后活动自身的 onCreate() 方法才会被调用。

假设 Fragments 可以在晚些时候实例化并被加到活动上来,那么我们就不应该依赖 onAttach() 中活动的状态。用来初始化视图并启动大多数任务的方法是 onCreateView(LayoutInflater, ViewGroup, Bundle)。如果 Fragment 是重新创建的,那么这里的 Bundle 类就是保存的实例状态。Fragments 还会使用 bundles 来序列化参数。Fragment 所需的每一种外部信息都可以通过调用 setArguments() 从宿主活动中获得,并且总是可以通过 getArguments() 调用在 Fragments 中读取。这样就可以将来自于活动起始意图的信息直接传递给显示的 Fragment。

应用最为重要的特性之一就是用户界面了。在 Android 开发者手册的第 5 章中,我们将会学习到一个基本的 UI 布局的 3 个关键元素:界面视图、界面触摸事件以及定义应用属性的按键。这包含了完整的资源目录,比如说用于动画的 res/animator/ 以及用于 XML 文件的 res/menu,它会选择菜单。

每个 UI 对象都有 3 个可定义的属性来改变 UI 的外观与性能,分别是对象尺寸、对象文本以及对象颜色。为了保持应用的一致性,读者将会学习到如何使用全局资源文件,它将有助于追踪每一个属性。

第 13 章针对的是想要通过 Google Play 的应用内购买来销售应用的开发者。为了使用应用内购买,你需要拥有一个 Google Play 账户来链接到开发者账户。你所需的一切都位于 Android SDK 的 SDK Manager 中的 Extras 中。

本书的作者有 4 位,有人可能会想这会不会造成图书风格的不一致。不会的,在如何为开源的 Android 移动操作系统编写应用的相关建议这个话题上,与既成事实的设备类型与 OS 版本的碎片化不同,各位作者所给出的建议都是一样的。大家在阅读本书时不会感到风格的不一致,各位作者的表达风格都是一样的。

Android 开发者手册:使用 Android SDK 构建应用(第 2 版)一书值得任何一位开发者拥有。阅读本书可以让你追赶上移动开发的潮流,在需要帮助时你总能从书中找到答案。

关于本书作者

Ronan ‘Zero’ Schwarz 是 OpenIntents 的联合创始人,这是一家专业的 Android 开发公司。Ronan 拥有 15 年的编程经验,涉足的领域非常广泛,如增强现实、Web、机器人、业务系统以及各种不同的编程语言,如 C、Java 和汇编等。Ronan 从 2007 年开始就从事 Android 平台开发了,并且创建了 SplashPlay 与 Droidspray,在两次 Google Android 开发者挑战赛中他都是顶级选手。他目前在德国柏林的 SinnerSchrader Mobile 工作,是一名咨询师。Ronan 经常在欧洲的各大会议上发表演讲,是一位杰出的 Android 开发者。

Phil Dutson 是 ICON Health and Fitness 的前端与移动主开发者。他曾为 NordicTrack、ProForm、Freemotion、Sears、Costco 及 Sam’s Club 等公司开发过项目并设计解决方案。在过去的几年中,他曾为各种移动设备编写过程序,从第一个 Palm Pilot 5000 到现在的 iOS 与 Android。Phil 是 jQuery, JQuery UI, and jQuery Mobile、Sams Teach Yourself jQuery Mobile in 24 hours 以及 Creating QR and Tag Codes3 本图书的作者。

James Steele 经常参加硅谷 Android 与新技术小组。他目前就职于 Sensor Platforms,专注于提升用户手势与上下文信息的价值,同时向开发者屏蔽掉传感器硬件的复杂性和物理特性。在加入 Sensor Platforms 前,Steele 博士在 Spansion、Polaris Wireless 与 ArrayComm 担任高级管理职位,同时还在麻省理工学院与俄亥俄州立大学从事理论与粒子物理的研究工作。他于纽约州立大学斯托尼布鲁克分校获得理论物理博士学位。

Nelson To 拥有多年的 Android 研究与开发经验。他对探索创新理念并通过 Android 应用实现其想法拥有巨大的热情。他曾开发过多款 Android 应用,包括 AOL AIM Android 应用、为 Logitech Revue Box 开发过 Google TV 上首款高清视频聊天 Android 应用(Vid)。他还在本地社区教授 Android 课程以帮助人们更加高效地学习 Android,同时还投身于 Android 社区,为本地社区组织 Android 会议。

查看英文原文: Book Review: Building Applications with the Android SDK, 2nd Edition

2013-11-04 05:211957
用户头像

发布了 88 篇内容, 共 262.3 次阅读, 收获喜欢 8 次。

关注

评论

发布
暂无评论
发现更多内容

学校招生报名小程序开发笔记(一)

CC同学

领导和团队的自主权——《敏捷实战-破解敏捷落地的60个难题》读后感(二)

Bruce Talk

敏捷开发 Agile

我与OpenHarmony| 社区征文

坚果

年中技术盘点

少年侠客【InsCode Stable Diffusion美图活动一期】 | 社区征文

度假的小鱼

Stable Diffusion 年中技术盘点

C语言宏定义中的#和##

梦笔生花

Cnetos7编译安装Pure-Ftpd教程。

百度搜索:蓝易云

云计算 Linux centos 运维 Pure-FTPd

CnosDB x LangChain: 聊着天来查询时序数据库

CnosDB

开源 时序数据库 CnosDB

从0到1:跑团小程序开发心得笔记

CC同学

2023-07-16:讲一讲Kafka与RocketMQ中零拷贝技术的运用?

福大大架构师每日一题

福大大架构师每日一题

人工智能自然语言处理:N-gram和TF-IDF模型详解

汀丶人工智能

人工智能 自然语言处理 nlp tf-idf N-gram

CodeArts Check系统规则集还不够?带你体验如何创建、启用自定义规则集

华为云PaaS服务小智

云计算 开发者 代码质量 华为云 代码检查

在 Go 中如何编写测试代码

江湖十年

golang 测试 后端 单元测试 go语言

代码随想录Day18 - 二叉树(五)

jjn0703

Nautilus Chain NautDID NFT 将上主网,Layer3 数字身份时代开启

股市老人

华为云ROMA Connect 的智能集成 – 现代企业数字化转型的新利器

华为云PaaS服务小智

云计算 华为云 华为开发者大会

大佬带你体验华为云代码检查服务CodeArts Check

华为云PaaS服务小智

云计算 开发者 软件开发 华为云

JMeter笔记15 | JMeter场景运行

单元测试 Jmeter 性能测试 自动化测试 接口测试

Ins风韩国美少女【InsCode Stable Diffusion美图活动一期】

繁依Fanyi

Nautilus Chain NautDID NFT 即将上线主网,Layer3 数字身份时代开启

大瞿科技

来自内部有很多需求,如何协调处理这些需求?

Bonaparte

产品 产品设计 产品思维 产品需求 内部需求

新一代iPaaS全域融合集成平台ROMA Connect HDC.Cloud 2023内容值得再读!

华为云PaaS服务小智

华为 华为云 华为开发者大会2023

测试工程师如何做到初级测试管理(个人思考)?

团队管理 测试 测试管理 测试部门职责

Python如何获取页面上某个元素指定区域的html源码?

Python 源码 HTML5, CSS3

Cnetos7编译安装Tomcat教程。

百度搜索:蓝易云

云计算 tomcat Linux centos 运维

JMeter笔记14 | JMeter场景设计和设置

单元测试 Jmeter 性能测试 自动化测试 接口测试

申请 GPT4.0Key!含详细步骤

石云升

AIGC ChatGPT GPT-4

3D渲染速度慢,花重金买显卡还是用云渲染更划算

3DCAT实时渲染

实时渲染云

阿里云服务器安装宝塔面板教程。

百度搜索:蓝易云

云计算 Linux 运维 云服务器 ECS

明代元素时装小姐姐【InsCode Stable Diffusion美图活动一期】

繁依Fanyi

人工智能大语言模型微调技术:SFT 监督微调、LoRA 微调方法、P-tuning v2 微调方法、Freeze 监督微调方法| 社区征文

汀丶人工智能

LoRa NLP 大模型 LLM模型 年中技术盘点 Freeze微调

书评:使用Android SDK构建应用,第2版_移动_Martin Monroe_InfoQ精选文章