新書推薦:
《
自由,不是放纵
》
售價:HK$
56.4
《
甲骨文丛书·消逝的光明:欧洲国际史,1919—1933年(套装全2册)
》
售價:HK$
277.8
《
剑桥日本戏剧史(剑桥世界戏剧史译丛)
》
售價:HK$
207.0
《
中国高等艺术院校精品教材大系:材料的时尚表达??服装创意设计
》
售價:HK$
78.2
《
美丽与哀愁:第一次世界大战个人史
》
售價:HK$
147.2
《
国家豁免法的域外借鉴与实践建议
》
售價:HK$
188.2
《
大单元教学设计20讲
》
售價:HK$
78.2
《
儿童自我关怀练习册:做自己最好的朋友
》
售價:HK$
71.3
|
內容簡介: |
学习为企业系统构建数据驱动的Android应用程序,Android设备已经超越消费应用范畴,进入企业领域。如果你准备着手构建与企业系统集成的数据驱动型Android应用程序,那么本书无疑是理想之选。 Android数据库应用编程——为企业开发数据驱动Android应用 透彻讲述如何使用内容提供器共享数据、使用适配器显示数据以及使用Web服务传输数据,介绍集成应用程序和现有企业系统、保护数据以及同步数据的方法。通过阅读本书,你将深入理解如何创建当今企业所需的数据密集型应用程序。
主要内容
◆重点讨论为基于REST的应用程序创建和使用简单数据库以便缓存和同步结果
◆介绍内容提供器、REST、并发和网络
◆详解使用Hibernate创建REST风格的Web服务以及将其连接到Android
◆通过避免在Internet上执行CRUD操作来提高性能
◆开始编写连接到Android的后端云服务
◆介绍新的开源和通用同步框架(专门与Android API集成)
◆解决应用程序实现中的安全问题
|
關於作者: |
Zigurd Mednieks是一位Android系统开发顾问,曾撰写多本Android软件开发书籍。
G. Blake Meike是一位工程师、作家和教师,从Java和Android诞生之初,便开始使用这些技术。
Laird Dornin担任一家重要无线运营商的架构师,曾参与构建移动Java操作系统,已与他人合著两本Android开发书籍。
Zane Pan先后在多家大公司(包括DEC、Intuit、EMC及最近的Nokia)担任架构师。
|
目錄:
|
第1章 Android平板和智能手机开发
1.1 Android是一个Java操作系统
1.2 工具和第一个Android应用程序
1.2.1 前提条件和准备工作
1.2.2 工具链测试驱动
1.3 一个代码库适应所有设备类型
1.3.1 以代码框架示例为起点
1.3.2 自动适应屏幕尺寸
1.4 组件、视图和生命周期
1.4.1 销毁并重建组件
1.4.2 MainActivity类
1.4.3 活动:用户交互的基本单元
1.4.4 Fragment:组织代码和UI的工具
1.4.5 PickFragment类
1.4.6 ItemFragment类
1.4.7 ItemDetailFragment类
1.5 整合Activity、Fragment和Action Bar
1.5.1 TabbedActivity类
1.5.2 针对大平板电脑的Main.xml文件
1.5.3 针对较小屏幕的main.xml和Subsidiary活动
1.5.4 TabActivity类
1.6 Android任务和进程模型
1.6.1 启动Dalvik实例
1.6.2 死亡,但没有变形
1.6.3 跨应用程序和进程的任务
1.7 多处理、安全性以及生命周期
1.8 声明应用程序属性
1.9 本章小结
第2章 关系模型和SQLite
2.1 数据库和关系模型
2.1.1 RDBMS的历史
2.1.2 关系模型
2.1.3 DBMS的其他功能
2.1.4 SQL语言
2.2 SQLite入门
2.2.1 SQLite命令行
2.2.2 SQLite数据库示例
2.3 本章小结
第3章 Android数据库支持
3.1 Java中的SQL:SQLiteDatabase类
3.1.1 基本的SQL嵌入
3.1.2 SQL语法
3.1.3 创建数据库:SQLiteOpenHelper类
3.1.4 管理数据库
3.2 游标、加载器和适配器
3.2.1 游标
3.2.2 适配器和视图绑定器
3.2.3 加载器
3.3 本章小结
第4章 内容提供器
4.1 使用内容提供器
4.1.1 名为URI的虚拟数据集
4.1.2 内容解析器:客户和提供器之间的联系
4.1.3 内容观察者:完成循环
4.1.4 IPC:系统范围可访问性
4.2 合约:URI和类型
4.2.1 授权
4.2.2 虚拟表的URI
4.2.3 返回值的MIME类型
4.2.4 权限
4.2.5 发布合约
4.3 实现内容提供器
4.3.1 创建内容提供器
4.3.2 返回类型和URI匹配器
4.3.3 写数据库
4.3.4 数据库查询
4.3.5 再论内容观察者
4.4 权限和注册
4.5 内容提供器和文件
4.6 本章小结
第5章 REST、内容提供器、并发性、网络和同步适配器
5.1 REST基础
5.1.1 使用REST的理由
5.1.2 HTTP协议中REST的应用
5.1.3 REST API示例
5.1.4 联系人表示方式
5.1.5 联系方法和URI
5.1.6 联系人事务
5.2 Android网络
5.2.1 Apache库
5.2.2 java.net库
5.2.3 权限
5.3 考虑并发性和生命周期
5.3.1 Android并发性架构
5.3.2 原生请求
5.4 健壮网络的架构
5.4.1 方法1:以服务为中心
5.4.2 方法2:以内容提供器为中心
5.4.3 方法3:以同步适配器为中心
5.4.4 Android内部的REST
5.4.5 restfulCachingProviderContacts项目:一个客户端示例
5.4.6 添加联系人
5.5 使用同步适配器
5.5.1 Android账户管理
5.5.2 创建同步适配器
5.6 本章小结
第6章 服务开发
6.1 服务开发的选择
6.1.1 请求的生命周期
6.1.2 三层服务架构
6.1.3 服务开发背景
6.2 为contacts构建REST风格的服务
6.2.1 一个传统的软件架构
6.2.2 编写示例:Spring Contacts服务及其同步变体
6.2.3 示例代码:Spring同步联系人服务
6.3 本章小结
第7章 移动和云计算
7.1 云性能和可伸缩性
7.1.1 移动的规模
7.1.2 云计算的持久性:从SQL到NoSQL
7.1.3 数据库文件格式
7.1.4 NoSQL的持久性
7.2 可扩展持久性的设计考虑事项
7.3 查看主流的云服务供应商
7.3.1 Amazon AWS
7.3.2 谷歌应用程序引擎
7.3.3 Joyent:托管MongoDB + node.js
7.3.4 Red Hat OpenShift
7.4 探讨代码示例
7.4.1 再论联系人DAO接口
7.4.2 编写代码:Amazon Contacts Service
7.4.3 编写代码:Google App Engine联系人
7.5 本章小结
第8章 基于设备的复杂数据:Android Contacts
8.1 PIM数据库:史前智能手机的化石
8.2 Android的Contacts提供器
8.3 ContactsContract API
8.4 Contacts提供器浏览器
8.4.1 用于浏览数据库的代码
8.4.2 Contacts提供器浏览器的源代码
8.5 本章小结
第9章 通用数据同步:Migrate项目和WebData API
9.1 WebData和Migrate项目介绍
9.1.1 Migrate项目的工作原理
9.1.2 Migrate项目如何简化移动端连接到企业的过程
9.1.3 详述 WebData API
9.1.4 WebData API REST风格的协议
9.2 Migrate项目的细节
9.2.1 Migrate项目Android WebData客户端
9.2.2 Android Migrate项目特性
9.3 WebData内容提供器Android API
9.3.1 Android内置提供器API
9.3.2 Migrate提供器API
9.4 本章小结
第10章 WebData应用程序
10.1 Migrate客户端
10.2 创建一个Migrate项目
10.2.1 步骤1:导入项目
10.2.2 步骤2:启用该项目作为一个Migrate客户端
10.2.3 步骤3:定义由Migrate管理的信息
10.2.4 步骤4:生成联系人合约
10.3 与Migrate REST代理交互
10.3.1 第5步:启动一个本地Migrate服务
10.3.2 第6步:发布应用程序的模式
10.4 配置设备
10.4.1 第1步:安装Migrate客户端
10.4.2 第2步:添加WebData账户
10.4.3 第3步:开启同步
10.4.4 第4步:运行应用程序
10.4.5 第5步:在Migrate Contacts中配置一个账户(可选)
10.5 未来的发展方向:MigrateClinic
10.6 本章小结
第11章 为数据构建人性化界面
11.1 相对于“菜谱”方式的模块化和灵活性
11.1.1 模块的概述
11.1.2 布局的改变
11.2 直接操作
11.2.1 TabbedActivity类
11.2.2 TabbedPagedFragment类
11.3 导航
11.3.1 小屏幕环境中的多任务
11.3.2 Android任务模型
11.3.3 任务和传统的进程模型
11.3.4 修改任务行为
11.3.5 在平板电脑中的导航
11.4 选择使用Support Package
11.5 本章小结
第12章 安全
12.1 平台安全
12.2 保持手机安全
12.2.1 避免恶意应用程序
12.2.2 了解恶意软件机制:Malware Genome
12.3 编写安全应用程序
12.3.1 黑客攻击目标
12.3.2 安全应用程序的要素
12.3.3 示例代码:保护REST风格调用
12.3.4 防止盗版
12.4 本章小结
|
內容試閱:
|
前言
许多面向企业的应用程序都采用一种主流模式:它们使用一个或多个REST风格的API访问数据。它们将数据显示给用户,允许用户修改数据,并更新服务器上的数据。本书正是一本专注于此类应用程序的书籍。
目标读者
如果你是一位经验丰富的Java或JavaScript程序员,可能对REST风格的应用程序的工作原理已经有所理解。你能正确地认为Android是一个Java操作系统:使用Java编写应用程序,然后将它们部署到在某些方面非常类似于Java虚拟机的环境中。这些应用程序使用REST风格的API进行通信来获取数据,并呈现给用户。
但是,对于Android软件开发的许多方面,先了解Android是如何设计的再着手开发将大有裨益。本书旨在让你在应用现有的经验,使用REST风格的应用程序与API来创建各种的高效、功能齐全的和响应式的Android应用程序之前做好实质性准备。你将避免因为假设Android编程就像是使用Oracle的类库的Web编程或客户端Java编程而导致的陷阱,并一开始就能高效地使用AndroidAPI完成任务。
如果你是一位Android编程新手,并且没有太多的iOS或Java经验,或者如果你不确定REST风格的应用程序是不是你需要学习的内容,应该先简单了解Android。初学者将会喜欢RetoMeier的优秀书籍ProfessionalAndroid4ApplicationDevelopment(JohnWiley&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章中你会将此服务部署到亚马逊和谷歌的云资源上。
你不会花太多时间的一件事情是加载指标(loadingindicator)。网络应用程序应该尽可能和“本地”应用程序的响应一样灵敏。创建、更新与删除(CRUD)不应该在用户和用户需要的数据之间介入。本书一个非常重要的部分介绍如何使CRUD脱离网络和用户的使用方式,方法是使用一个轻量级但功能强大的同步协议。本书通过引入一个封装了这个方法的开源框架,而完成了这一做法。
本书最后深入讨论Android安全性。
组织结构
本书书名源于其主旨是获取、展示和更新设备上的数据,以及使用云资源,这是大多数企业应用程序的核心。
本书开始快速介绍Android编程,从而引导你入门,创建一个显示数据的应用程序。这是一个尽可能快速的介绍,如果你需要通过Android文档的在线教程更深入地了解一些基本知识,那么不要惊讶。
之后,你将沉浸在本书的核心主题:数据上。本书自底向上介绍:如何在本地存储数据,如何进行查询,如何从RESTAPI得到它并提供服务,在Android中如何实现观察者模式,如何更新它,以及在有、无连接时如何处理上述这一切,并有最好的性能表现。本书后面涵盖更多面向呈现数据的UI编程。本书最后一章介绍Android安全。
要使用本书,你需要什么
本书是关于Android软件开发的,因此其示例需要使用Android软件开发工具包(SDK),可以从developer.android.com下载该工具包。该SDK与三种最流行的桌面操作系统兼容:Windows、MacOSX和Linux。你可能更愿意使用Android设备来运行代码示例,但你可以使用模拟器,它包含在SDK中,并可以在台式机上运行。
要运行本书中的示例服务,需要下载每一章中的软件包,其中包括:ApacheTomcat、ant、MySQL和Cygwin工具包。你还将需要有管理特权的亚马逊AWS账户和一个谷歌账户。
本书约定
为了帮助你从书本中获得最多价值以及跟踪所发生的事情,你会看到一些约定贯穿全书。
代码出现在两种不同的方式:
●我们使用monofont型,没有突出大部分代码示例。
●我们使用粗体强调在目前情况下特别重要的代码。
源代码
在练习书中的示例时,可以选择手动输入代码或者使用本书附带的源代码文件。书中用到的所有源代码都可以从www.wrox.com下载。进入站点http://www.worx.com后,只需要找到本书的书名(使用Search搜索框或书名列表),单击本书详细信息页面上的DownloadCode链接,就可以得到本书所有的源代码。
下载完代码后,用你喜欢的压缩工具把它解压缩。此外,也可以去Wrox的主下载页面www.worx.com/dynamic/books/download.aspx找到本书或Wrox出版的其他书籍的代码。
另外,也可从http://www.tupwk.com.cn/downpage下载相关的源代码。
勘误表
尽管我们已经尽了各种努力来保证文章或代码中不出现错误,但是错误总是难免的,如果你在本书中找到了错误,例如拼写错误或代码错误,请告诉我们,我们将非常感激。通过勘误表,可以让其他读者避免受挫,当然,这还有助于提供更高质量的信息。
要在网站上找到本书的勘误表,可以登录http://www.wrox.com,通过Search工具或书名列表查找本书,然后在本书的细目页面上,单击BookErrata链接。在这个页面上可以查看Wrox编辑已提交和粘贴的所有勘误项。完整的图书列表还包括每本书的勘误表,网址是www.wrox.com/misc-pages/booklist.shtml。
如果在BookErrata页面上没有看到你找出的错误,请进入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上阅读信息。如果希望某个论坛给自己发送新信息,可以在论坛列表中单击该论坛对应的SubscribetothisForum图标。
对于如何使用WroxP2P的更多信息,可阅读P2PFAQ,了解论坛软件的工作原理,以及许多针对P2P和Wrox图书的常见问题解答。要阅读FAQ,可以单击任意P2P页面上的FAQ链接。
|
|