许多面向企业的应用程序都采用一种主流模式:它们使用一个或多个REST风格的API访问数据。它们将数据显示给用户,允许用户修改数据,并更新服务器上的数据。本书正是一本专注于此类应用程序的书籍。
目标读者
如果你是一位经验丰富的Java或JavaScript程序员,可能对REST风格的应用程序的工作原理已经有所理解。你能正确地认为Android是一个Java操作系统:使用Java编写应用程序,然后将它们部署到在某些方面非常类似于Java虚拟机的环境中。这些应用程序使用REST风格的API进行通信来获取数据,并呈现给用户。
但是,对于Android软件开发的许多方面,先了解Android是如何设计的再着手开发将大有裨益。本书旨在让你在应用现有的经验,使用REST风格的应用程序与API来创建各种的高效、功能齐全的和响应式的Android应用程序之前做好实质性准备。你将避免因为假设Android编程就像是使用Oracle的类库的Web编程或客户端Java编程而导致的陷阱,并一开始就能高效地使用Android API完成任务。
如果你是一位Android编程新手,并且没有太多的iOS或Java经验,或者如果你不确定REST风格的应用程序是不是你需要学习的内容,应该先简单了解Android。初学者将会喜欢Reto Meier的优秀书籍Professional Android 4 Application Development (John Wiley & Sons, 2012)或developer.android.com的在线教程,相比Android的初期,在线文档已经得到很大的改进和完善。
如果你有兴趣将开发视野扩大到服务端,那么本书将赋予你处理应用程序网络两端的数据的能力。
涵盖的内容
本书以创建一个面向企业的Android应用程序的基础知识开始讲解,这些应用程序可以运行在手机和平板电脑上。但它不是一本面向初学者的图书。在阅读本书前,你应该至少阅读了谷歌的Android开发者网站上的在线教程。
Android使用SQLite,而本书相当深入地讲解SQL和SQLite,你将会了解数据如何存储在Android系统的SQLite数据库中。
Android以数据库类包装SQLite,而本书涵盖了这些类,并且对这些类的讨论也足够深入。
当应用程序使用Android环境中的数据时,它们往往使用一个专门的服务组件,称为ContentProvider。这个类以及相关的ContentResolver类提供了一个类似REST的接口,用于访问Android设备内的数据。使用这些类在构建应用程序时具有其他优点,即使用观察者模式。
使你能实现一个端到端的观察者模式是本书的一个要素。你的数据驻留在服务器上的REST风格API背后的数据库中。在本地,数据很可能存储在ContentProvider组件的SQLite数据库中。本书将介绍如何确保呈现给用户的数据是一致并且最新的。
简单也很重要。JSON是表示具有简单性和灵活性数据的一种简单方式,否则,就需要复杂的数据库设计。本书展示如何使用JSON与SQLite以保持实现的简洁,也展示一个复杂的Android数据库和ContentProvider接口,其使用传统的数据库设计方法实现。
当使用本书中的示例时,你将为前端应用程序创建和部署服务器。特别是,在第6章的末尾,第5章和第6章一起形成一个端到端的示例,它涵盖了本书中的技巧。在第7章中你会将此服务部署到亚马逊和谷歌的云资源上。
你不会花太多时间的一件事情是加载指标(loading indicator)。网络应用程序应该尽可能和“本地”应用程序的响应一样灵敏。创建、更新与删除(CRUD)不应该在用户和用户需要的数据之间介入。本书一个非常重要的部分介绍如何使CRUD脱离网络和用户的使用方式,方法是使用一个轻量级但功能强大的同步协议。本书通过引入一个封装了这个方法的开源框架,而完成了这一做法。
本书最后深入讨论Android安全性。
组织结构
本书书名源于其主旨是获取、展示和更新设备上的数据,以及使用云资源,这是大多数企业应用程序的核心。
本书开始快速介绍Android编程,从而引导你入门,创建一个显示数据的应用程序。这是一个尽可能快速的介绍,如果你需要通过Android文档的在线教程更深入地了解一些基本知识,那么不要惊讶。
之后,你将沉浸在本书的核心主题:数据上。本书自底向上介绍:如何在本地存储数据,如何进行查询,如何从REST API得到它并提供服务,在Android中如何实现观察者模式,如何更新它,以及在有、无连接时如何处理上述这一切,并有最好的性能表现。本书后面涵盖更多面向呈现数据的UI编程。本书最后一章介绍Android安全。
要使用本书,你需要什么
本书是关于Android软件开发的,因此其示例需要使用Android软件开发工具包(SDK),可以从developer.android.com下载该工具包。该SDK与三种最流行的桌面操作系统兼容:Windows、Mac OS X和Linux。你可能更愿意使用Android设备来运行代码示例,但你可以使用模拟器,它包含在SDK中,并可以在台式机上运行。
要运行本书中的示例服务,需要下载每一章中的软件包,其中包括:Apache Tomcat、ant、MySQL和Cygwin工具包。你还将需要有管理特权的亚马逊AWS账户和一个谷歌账户。
本书约定
为了帮助你从书本中获得最多价值以及跟踪所发生的事情,你会看到一些约定贯穿全书。
代码出现在两种不同的方式:
●我们使用monofont型,没有突出大部分代码示例。
●我们使用粗体强调在目前情况下特别重要的代码。
源代码
在练习书中的示例时,可以选择手动输入代码或者使用本书附带的源代码文件。书中用到的所有源代码都可以从www.wrox.com下载。进入站点http://www.worx.com后,只需要找到本书的书名(使用Search搜索框或书名列表),单击本书详细信息页面上的Download Code链接,就可以得到本书所有的源代码。
下载完代码后,用你喜欢的压缩工具把它解压缩。此外,也可以去Wrox的主下载页面www.worx.com/dynamic/books/download.aspx 找到本书或Wrox出版的其他书籍的代码。
另外,也可从http://www.tupwk.com.cn/downpage下载相关的源代码。
勘误表
尽管我们已经尽了各种努力来保证文章或代码中不出现错误,但是错误总是难免的,如果你在本书中找到了错误,例如拼写错误或代码错误,请告诉我们,我们将非常感激。通过勘误表,可以让其他读者避免受挫,当然,这还有助于提供更高质量的信息。
要在网站上找到本书的勘误表,可以登录http://www.wrox.com,通过Search工具或书名列表查找本书,然后在本书的细目页面上,单击Book Errata链接。在这个页面上可以查看Wrox编辑已提交和粘贴的所有勘误项。完整的图书列表还包括每本书的勘误表,网址是www.wrox.com/misc-pages/booklist.shtml。
如果在Book Errata页面上没有看到你找出的错误,请进入www.worx.com/contact/ techsupport.shtml,填写表单,发电子邮件,我们就会检查你的信息,如果是正确的,就在本书的勘误表中粘贴一个消息,我们将在本书的后续版本中采用。
另外,如有任何意见和建议,也可以发邮件给wkservice@vip.163.com。
p2p.wrox.com
P2P邮件列表是为作者和读者之间的讨论而建立的。读者可以在p2p.wrox.com上加入P2P论坛。该论坛是一个基于Web的系统,用于传送与Wrox图书相关的信息和相关技术,与其他读者和技术用户交流。该论坛提供了订阅功能,当论坛上有新帖子时,会给你发送你选择的主题。Wrox作者、编辑和其他业界专家和读者都会在这个论坛上进行讨论。
在http://p2p.wrox.com上有许多不同的论坛,帮助读者阅读本书,在读者开发自己的应用程序时,也可以从这个论坛中获益。要加入这个论坛,必须执行下面的步骤:
(1) 进入p2p.wrox.com,单击Register链接。
(2) 阅读其内容,单击Agree按钮。
(3) 提供加入论坛所需的信息及愿意提供的可选信息,单击Submit按钮。
(4) 然后就可以收到一封电子邮件,其中的信息描述了如何验证账户,完成加入过程。
加入论坛后,就可以发送新信息,回应其他用户的帖子。可以随时在Web上阅读信息。如果希望某个论坛给自己发送新信息,可以在论坛列表中单击该论坛对应的Subscribe to this Forum图标。
对于如何使用Wrox P2P的更多信息,可阅读P2P FAQ,了解论坛软件的工作原理,以及许多针对P2P和Wrox图书的常见问题解答。要阅读FAQ,可以单击任意P2P页面上的FAQ链接。