Android开发模式与最佳实践
  • 推荐0
  • 收藏0
  • 浏览173

Android开发模式与最佳实践

?Phil Dutson (作者)  李雄 (译者) 李利健 (责任编辑)

  • 书  号:978-7-121-30908-3
  • 出版日期:2017-03-22
  • 页  数:308
  • 开  本:16(185*235)
  • 出版状态:上市销售
  • 原书名: Android Development Patterns: Best Practices for Professional Developers
  • 原书号:9780133923681
  • 维护人:张春雨
本书首先介绍了安卓开发的基础知识,包括如何搭建环境、一般的开发流程、给App添加测试用例等。接下来是组成安卓框架的各个模块和组件,包括应用的结构,如何使用widget和component,以及怎么使用view。然后介绍了应用的设计模式,以及如何创建一个方便管理和更新的App,包括如何添加多媒体和网络连接等。本书后面部分也覆盖了可选hardware组件、安卓Wear和安卓TV。最后介绍了一些关键的优化策略,以及如何打包App去通过企业系统、邮箱和Google Play Service进行发布。
序言
自从Cupcake发布以来,安卓的发展速度非常惊人。如今,安卓不仅已经运行在手机上,它也成为音频设备、平板电脑、电视机、汽车和其他制造商的首选方案。
随着安卓的使用越来越普遍,对于熟悉安卓的开发人员的需求量也越来越大。若要设计出下一批令人惊讶的和必须有的应用,我们需要懂安卓系统设计、技术优势和使用的开发人员。
全世界的许多人都是第一次使用安卓,作为开发人员的我们需要确保安卓提供给用户一流的体验,要使用户感到满意,而且让他们明白安卓系统是真的多么神奇。
为什么有开发模式?
在快速发展的开发世界,模式一般是比较省时的方案,开发者能用这些方案最大化他们的产出和最小化方案失败浪费的时间。
安卓开发是很特殊的,很多Java和面向对象程序员感到既熟悉又陌生。它与Java语言和结构的联系有助于那些有经验的开发人员几乎不花多少时间就可以更快地熟悉安卓。但是,有一些优化和内存处理技术对富有经验的Java开发人员来说并不是最佳。
本书是帮助有经验的工程师理解安卓构建和思维方式的一个桥梁。写本书是为了帮助刚接触安卓开发的人能了解这个平台的基础知识,以及如何处理安卓带来的多面性和复杂性,同时也针对高级开发人员给出一些必需的比较深入的提示和策略帮助他们做出一个成功的App。
谁应该读这本书?
任何对安卓开发感兴趣的人都会发现这本书既有意思,也非常有用。那些刚开始接触安卓的人可能不会发现这本书的内容非常完整,但是一些开发经验应该会有所帮助。但是,对于一些比较执着的人来说,他们并不介意多花些时间做尝试,因此,他们在追求完美App 的过程中会发现这是可以接受的。
开始对那些刚接触安卓应用开发的人来说,至少需要一台运行OS X、Windows 或者Linux的电脑。在这些系统中, 你应该从http://developer.android.com/sdk/ 下载一个AndroidStudio。当然,还有安卓SDK。
若要充分利用安卓SDK,需要下载和开发使用相对应的版本和示例代码。虽然你可以只下载某一个指定版本,但是你应该下载所有App 需要运行的版本的SDK。
你还应该用安卓SDK 去下载模拟器的系统镜像或者安卓虚拟设备(Android Virtual Device,简称AVD)。这些系统镜像允许你在没有安卓设备的情况进行测试。
强烈推荐你至少要有一个安卓设备用于测试。当然,最好能有多个形状不同的设备,这样你就能像用户那样更准确地测试、监控和体验你的App。
访问下面的网站可以得到最新的安卓信息,以及查看新功能何时发布和如何使用它们。
●● StackOverflow : http://www.stackoverflow.com/
●● 安卓开发者官网 : http://developer.android.com/
●● 安卓开发者博客 : http://android-developers.blogspot.com/
●● YouTube谷歌开发者 : https://www.youtube.com/user/androiddevelopers
●● 安卓官方源代码(AOSP) : http://source.android.com/
本书结构
本书首先介绍了安卓开发的基础知识,包括如何搭建环境。根据重要性,依次介绍了创建一个正确的开发流程给App 添加测试,确保代码能以预期的方式正常工作。
接下来逐步介绍了组成安卓框架的各个模块和组件。这包括应用的结构是什么,如何使用widget 和component,以及学习怎么使用和创建view。
而后,我们还介绍了应用的设计模式,以及学习如何创建一个方便管理和更新的App。这包括如何添加多媒体和网络连接,并使它们不会最终浪费宝贵的电池电源,尽可能提供给用户最准确和最新的信息。
书的后面部分也覆盖到了可选hardware 组件、安卓Wear 和安卓TV,这有助于帮你把App 提升到下一个更高的级别,以及探索新的机会。随着安卓出现在越来越多的设备上,你逐渐会明白如何和为什么把App 提供给投资这些平台的用户是你的最佳利益。
最后,你还会学到一些关键的优化策略,以及如打包App 去通过企业系统、邮箱和Google Play Service 进行发布。
当你看完这本书时,你将会理解安卓系统是如何工作的,然而,更重要的是如何制作一个优化的、可以发布的和成千上万用户满意的App。
在网站“informit.com”注册这本书的副本,将可以非常方便地访问和获取相关下载、更新和修正的内容。如要注册流程,请到网站“informit.com/register”,然后登录或者注册一个账号。输入产品ISBN 9780133923681,然后单击“Submit”。一旦注册流程完成,你将会在“Registered Products”下面发现可用的奖励内容。
致谢
创作一本书是需要极大的工作量的, 如果没有一个优秀团队的帮助、努力、指导和勤奋工作,这是不可能完成的。如果没有三个非常牛的技术编辑帮忙修改,我不可能完成这个工作。非常感谢Romin Irani、Douglas Jones和Ray Rischpater,你们每个人都提供了非常有个人特点的帮助,使这本书变得更加完美,也确保我始终没有偏离既定的轨道太远。
我也要感谢我的开发编辑Sheri Replin。和Sheri一起工作是一件非常开心的事情,她忍受了很多疯狂的时刻,尤其是当我确定要选择一些来自于咖啡因过多而胡言乱语的开发人员的词组成完整的句子时。而信誉度这一点要归功于我的文字编辑Bart Reed。他奇迹般地把我的疯狂思维管理得既聪明又勤奋,使这本书读起来像我大脑里预想的那样好,同时也使它对读者显得非常清晰。
与往常一样,Pearson世界级的团队应该得到比我想的更多的感谢。我尤其要感谢这些人:Laura Lewin、Olivia Basegio、Elaine Wiley、 Kristy Hart、 Mark Taub,以及整个制作团队。弄这些技术文档不是一晚上就能完成的任务,我们团队的同事们经历了很长时间的会议、邮件、电话等才能确保读者读到这本最新的书。
我要感谢我的家人,在过去的几年中,他们允许我几乎每个晚上和每个周末都不在家。使这本书如期发行真的是一件非常不容易的事情,有时候是需要加班的,并且我还要参加很多相关的活动。我相信没有你们,我不可能很好地平衡工作和生活的关系。
最后,我要感谢你!谢谢你选择这本书,谢谢你在书架(电脑或其他)上给它留了一个位置。能和这么多优秀的人一起工作,我感到非常荣幸。我相信,这本书能够让你在创建人们可以长期使用的安卓应用的最佳道路上前行。

目录

目录
1 开发工具………………………………………………………………………1
Android Studio ………………………………………………………………………1
安装Android Studio ………………………………………………………………………2
使用Android Studio ………………………………………………………………………4
启动一个新项目 ……………………………………………………………………………6
独立的SDK工具 ……………………………………………………………………9
安卓设备模拟 ………………………………………………………………………10
安卓虚拟设备 ………………………………………………………………………………11
GenyMotion ………………………………………………………………………………12
Xamarin安卓播放器 ………………………………………………………………………13
版本控制系统 ………………………………………………………………………14
Subversion …………………………………………………………………………………14
Git …………………………………………………………………………………………15
Mercurial ……………………………………………………………………………………15
总结 …………………………………………………………………………………16
2 测试和调试…………………………………………………………………17
单元测试 ……………………………………………………………………………17
集成测试 ……………………………………………………………………………20
调试 …………………………………………………………………………………25
Profiling ……………………………………………………………………………………25
Tracing …………………………………………………………………………………… 28
Messaging ………………………………………………………………………………… 29
总结 ………………………………………………………………………………… 32
3 应用结构…………………………………………………………………… 33
Manifest …………………………………………………………………………… 34
Java ………………………………………………………………………………… 37
Res(Resources) ………………………………………………………………… 37
Drawable …………………………………………………………………………………… 37
Layout ……………………………………………………………………………………… 39
Menu ……………………………………………………………………………………… 40
Values ……………………………………………………………………………………… 40
其他Resource ……………………………………………………………………………… 41
Gradle ……………………………………………………………………………… 42
总结 ………………………………………………………………………………… 43
4 组件………………………………………………………………………… 45
Intent ……………………………………………………………………………… 45
Intent Filter ………………………………………………………………………………… 46
Broadcast Receiver ………………………………………………………………………… 47
Activity …………………………………………………………………………… 48
创建一个Activity ………………………………………………………………………… 49
Activity 生命周期 ………………………………………………………………………… 50
Fragment …………………………………………………………………………… 52
创建一个Fragment ……………………………………………………………………… 53
与Fragment 通信 ………………………………………………………………………… 56
Loader ……………………………………………………………………………………… 57
总结 ………………………………………………………………………………… 59
5 View… …………………………………………………………………… 61
View 类 …………………………………………………………………………… 61
AnalogClock 子类 ……………………………………………………………………… 62
ImageView 子类 …………………………………………………………………………… 62
KeyboardView 子类 ……………………………………………………………………… 63
MediaRouteButton 子类 ………………………………………………………………… 64
ProgressBar 子类 ……………………………………………………………………… 65
Space 子类 ………………………………………………………………………………… 66
SurfaceView 子类 ……………………………………………………………………… 67
TextView 子类 …………………………………………………………………………… 68
TextureView 子类 ……………………………………………………………………… 68
ViewGroup 子类 …………………………………………………………………………… 69
ViewStub 子类 …………………………………………………………………………… 71
创建一个定制的View …………………………………………………………… 71
总结 ………………………………………………………………………………… 74
6 Layout… ………………………………………………………………… 75
Layout 基础 ………………………………………………………………………… 75
Layout Measurement ……………………………………………………………………… 76
Layout 坐标 ……………………………………………………………………………… 77
Layout Container …………………………………………………………………… 78
Linear Layout ……………………………………………………………………………… 79
Relative Layout …………………………………………………………………………… 80
Table Layout ……………………………………………………………………………… 83
Frame Layout ……………………………………………………………………………… 86
WebView …………………………………………………………………………………… 87
总结 ………………………………………………………………………………… 88
7 App Widget… …………………………………………………………… 89
App Widget Layout ………………………………………………………………… 90
AppWidgetProviderInfo 对象 ………………………………………………… 93
App Widget 尺寸 ………………………………………………………………………… 94
更新频率 …………………………………………………………………………………… 94
预览图片 …………………………………………………………………………………… 95
Widget Category …………………………………………………………………………… 96
Widget Category 布局 …………………………………………………………………… 97
Resizable 模式 …………………………………………………………………………… 97
AppWidgetProviderInfo 对象实例 …………………………………………………… 98
AppWidgetProvider 类 ………………………………………………………………… 98
应用Manifest 条目 …………………………………………………………………… 101
总结 ………………………………………………………………………………… 102
8 应用设计:使用MVC … ……………………………………………… 103
Model ……………………………………………………………………………… 104
View………………………………………………………………………………… 105
Controller ………………………………………………………………………… 106
异步处理 …………………………………………………………………………… 108
AsyncTask ……………………………………………………………………………… 109
总结 ………………………………………………………………………………… 110
9 绘图和动画……………………………………………………………… 111
图形 ………………………………………………………………………………… 111
Bitmap …………………………………………………………………………………… 111
NinePatch ……………………………………………………………………………… 113
Drawable ………………………………………………………………………………… 115
OpenGL ES ……………………………………………………………………………… 118
动画 ………………………………………………………………………………… 122
View 动画 ……………………………………………………………………………… 122
Property 动画 …………………………………………………………………………… 123
Drawable 动画 ………………………………………………………………………… 127
Transition 框架 ………………………………………………………………………… 128
总结 ………………………………………………………………………………… 131
10 网络… ………………………………………………………………… 133
访问Internet ……………………………………………………………………… 133
网络检测 ………………………………………………………………………………… 133
使用HTTP 客户端 ……………………………………………………………………… 135
解析XML ………………………………………………………………………… 137
网络操作异步处理 ………………………………………………………………… 139
Volley ……………………………………………………………………………… 141
总结 ………………………………………………………………………………… 145
11 Location 数据处理…………………………………………………… 147
权限 ………………………………………………………………………………… 147
Google Play Service Location API ………………………………………………… 157
总结 ………………………………………………………………………………… 163
12 多媒体… ……………………………………………………………… 165
Audio 处理 ………………………………………………………………………… 165
Audio Playback ………………………………………………………………………… 166
Audio 录制 ……………………………………………………………………………… 170
Video 处理 ………………………………………………………………………… 172
Video Playback ………………………………………………………………………… 172
总结 ………………………………………………………………………………… 176
13 可选Hardware API… ……………………………………………… 177
蓝牙 ………………………………………………………………………………… 177
开启蓝牙 ………………………………………………………………………………… 178
使用蓝牙发现设备 ……………………………………………………………………… 179
使用传统的蓝牙连接 …………………………………………………………………… 181
使用BLE 通信 ………………………………………………………………………… 184
近场通信(NFC) ………………………………………………………………… 188
ACTION_NDEF_DISCOVERED …………………………………………………………… 189
ACTION_TECH_DISCOVERED …………………………………………………………… 190
ACTION_TAG_DISCOVERED …………………………………………………………… 191
设备传感器 ………………………………………………………………………… 194
检测可用的传感器 ……………………………………………………………………… 195
读传感器数据 …………………………………………………………………………… 197
总结 ………………………………………………………………………………… 199
14 管理账户数据… ……………………………………………………… 201
获取账户 …………………………………………………………………………… 201
安卓备份服务 ……………………………………………………………………… 203
使用Google Drive 安卓API ……………………………………………………… 205
使用Google Play Game 服务 …………………………………………………… 210
保存游戏 ………………………………………………………………………………… 211
总结 ………………………………………………………………………………… 215
15 Google Play Service… …………………………………………… 217
添加Google Play Service ………………………………………………………… 217
使用Google API 客户端 ………………………………………………………… 219
Google Fit ………………………………………………………………………… 223
开启API 和鉴权 ……………………………………………………………………… 224
App 配置和连接 ………………………………………………………………………… 225
Nearby Message API ……………………………………………………………… 226
开启Nearby Message …………………………………………………………………… 226
发送和接收消息 ………………………………………………………………………… 227
总结 ………………………………………………………………………………… 232
16 Android Wear… …………………………………………………… 233
Android Wear 基础 ………………………………………………………………… 233
屏幕处理 …………………………………………………………………………… 234
调试 ………………………………………………………………………………… 237
连接模拟器 ……………………………………………………………………………… 237
连接穿戴式设备 ………………………………………………………………………… 239
与安卓可穿戴式设备通信 ………………………………………………………… 240
Notification ……………………………………………………………………………… 241
发送数据 ………………………………………………………………………………… 243
总结 ………………………………………………………………………………… 245
17 Google Analytics…………………………………………………… 247
添加Google Analytics …………………………………………………………… 247
Google Analytics 基础 …………………………………………………………… 250
事件 ……………………………………………………………………………………… 251
目标 ……………………………………………………………………………………… 252
电子商务 ………………………………………………………………………………… 253
定制时序 ………………………………………………………………………………… 254
定制维度 ………………………………………………………………………………… 254
定制度量 ………………………………………………………………………………… 255
总结 ………………………………………………………………………………… 255
18 优化… ………………………………………………………………… 257
应用优化 …………………………………………………………………………… 257
应用首次启动 …………………………………………………………………………… 257
应用日志 ………………………………………………………………………………… 259
应用配置 ………………………………………………………………………………… 260
内存管理 …………………………………………………………………………… 262
垃圾回收监控 …………………………………………………………………………… 263
检查内存使用 …………………………………………………………………………… 264
性能 ………………………………………………………………………………… 265
处理对象 ………………………………………………………………………………… 266
静态函数和变量 ………………………………………………………………………… 266
For 循环增强 …………………………………………………………………………… 266
Float、double 和int ……………………………………………………………………… 267
优化数据容器 …………………………………………………………………………… 267
总结 ………………………………………………………………………………… 268
19 Android TV…………………………………………………………… 269
概况 ………………………………………………………………………………… 269
十英尺视图 ……………………………………………………………………………… 270
TV 能力 ………………………………………………………………………………… 272
文字、颜色和图片 ……………………………………………………………………… 274
创建一个App ……………………………………………………………………… 277
模拟和测试 ………………………………………………………………………… 280
总结 ………………………………………………………………………………… 282
20 应用部署… …………………………………………………………… 283
准备部署 …………………………………………………………………………… 283
物件清单 …………………………………………………………………………… 284
认证密钥 ………………………………………………………………………………… 284
联系邮箱 ………………………………………………………………………………… 284
应用网站 ………………………………………………………………………………… 285
外部服务或服务器 ……………………………………………………………………… 285
应用图标 ………………………………………………………………………………… 285
许可证 …………………………………………………………………………………… 286
合适的包名 ……………………………………………………………………………… 286
验证权限和需求 ………………………………………………………………………… 287
去掉Log 和调试信息 ………………………………………………………………… 288
去掉多余无用的东西 …………………………………………………………………… 288
Google Play 相关准备 …………………………………………………………… 288
应用截图 ………………………………………………………………………………… 289
推广视频 ………………………………………………………………………………… 289
高分辨率图标 …………………………………………………………………………… 289
功能图 …………………………………………………………………………………… 290
推广图 …………………………………………………………………………………… 290
安卓电视条幅 …………………………………………………………………………… 290
付费 ……………………………………………………………………………………… 291
生成APK ……………………………………………………………………………… 291
总结 ………………………………………………………………………………… 292

读者评论