本书详细阐述了与Android资料库程式设计相关的基本解决方案。
基本介绍
- 书名:Android资料库程式设计
- 作者:(美)Jason Wei
- 译者:王学昌 吴骅 林展宏
- ISBN:9787302378464
- 定价:49.00元
- 出版社:清华大学出版社
- 出版时间:2015年1月
- 装帧:平装
内容介绍
《Android资料库程式设计》详细阐述了与Android资料库程式设计相关的基本解决方案,主要包括在Android系统中存储数据、使用SQLite资料库、SQLite查询、使用ContentProviders、表查询操作、UI关联、Android资料库套用、外部资料库、数据的收集与存储以及综合示例等内容。此外,本书还提供了相应的示例、代码,以帮助读者进一步理解相关方案的实现过程。
前言
今天,我们生活在一个越来越多地依赖以数据为中心和数据驱动的世界中。如亚马逊之类的公司对用户查看和购买的商品进行信息跟蹤,以便能够向用户推荐更多类似产品;如Google公司,存储通过它搜寻的每一条查询,以便在未来能够提供更好的搜寻查询建议;类似Facebook这样的社交媒体网站会记录用户与朋友之间的每一个事件,以便更好地了解数以百万计的用户。我们生活在以数据为中心的世界,开发以数据为中心的应用程式正是我们的当务之急。
在过去几年中,智慧型手机和平板电脑等移动设备的使用量一直呈爆炸式的增长。本书的目的是使用Google已经内置在Android作业系统当中的多种方法来探索数据以及Android系统本身。本书不仅力求让读者了解不同的数据存储方法,还会比较每一种方法的优缺点。最后,希望通过本书,用户能够高效创建、精心设计一个可扩展的数据中心应用程式。
本书的结构
第1章(在Android系统中存储数据):侧重于Android系统上所有可用的各种本地数据存储方法。每个存储方法都会附带较多的代码示例,以及优缺点的比较。
第2章(使用SQLite资料库):通过介绍自定义SQLite资料库的实现深入了解最複杂和最常用的本地数据存储形式--SQLite资料库。
第3章(SQLite查询):粗略介绍SQL查询语言。指导读者如何构建与任意SQLite资料库一起使用的功能强大的资料库查询。
第4章(使用Content Providers):扩展前面几章SQLite资料库的内容,向读者介绍如何使用Content Provider将其资料库共享给Android作业系统。介绍一个Content Provider的完整实施过程,并讨论了数据公开化的好处。
第5章(表查询操作):深入探讨Android作业系统所提供的最为广泛的Content Provider套用--Contacts。探讨了Contacts表的结构,并提供常见查询的实例。
第6章(UI关联):讨论用户将数据关联到用户界面的方法。因为数据以列表形式显示,因此本章的实例介绍了两种典型的列表适配器。
第7章(Android资料库套用):尝试避开程式设计,专注于更高的设计理念。本章讲述到目前为止所有可以使用的本地存储方法,并且强调这些本地方法的不足之处。由此接下来的几章介绍的都是外部存储方面的内容。
第8章(外部资料库):介绍使用外部资料库的概念,并向读者介绍几种常见的外部数据存储。最后介绍如何创建Google App Engine数据存储的实例。
第9章(数据的收集与存储):通过介绍应用程式收集可插入外部资料库数据的方法,用以扩展前面章节的内容。收集数据的方法包括使用可用的API,也包括编写自定义的Web抓取器模组。
第10章(综合示例):本章将会完成第8章和第9章当中开始编写的应用程式。其中涉及如何首先创建HTTP servlet,其次从移动应用程式中发起对这些HTTP servlet的HTTP请求。本章内容将作为全书的最终目标,向读者介绍如何将移动应用程式连线到他们的外部资料库,最后进行解析并以列表形式显示HTTP回响。
阅读本书所需基础
阅读本书需要了解Android作业系统的基本知识、一个可以创建Android和Google App Engine项目的程式开发集成环境(如Eclipse等),以及需要一个可以完成基本Web请求的网际网路连线。
本书适合的读者
本书的读者对象是具有一定资料库经验和其他后端设计概念,并且想要了解移动应用程式中如何套用这些概念的开发人员。具有移动应用程式开发和(或)Android平台经验,但对后端系统和设计、实施资料库架构都不太熟悉的开发人员,可能会觉得这本书很有用。
即使对于已经具有丰富的Android程式设计和资料库实施经验的人员,本书可能有助于他们进一步巩固概念,并了解Android上更多的数据存储方法。
体例
在本书中,将会发现一些用来区分不同的信息所使用不同样式的字型。以下是这些样式的例子,并附有说明。
在文本中的代码单词表示如下:"想要转换为位元组形式的字元串,传递到输出流的write()方法"。
代码块的样式设定如下:
Set<String> values = new HashSet<String>();
values.add("Hello");
values.add("world");
Editor e = sp.edit();
e.putStingSet("strSetKey", values);
e.commit();
Set<String> ret = sp.getSeringSet(values, new HashSet<String>());
For(String r : ret) {
Log.i("SharedPreferencesExample", "Retrieved vals: " + r);
}
当需要引起对特殊代码段的注意时,我们将相关的行或条目设定为粗体显示,如下所示:
<uses-sdk android:minSdkVersion="5" />
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>
命令行内的输入或者输出如下:
adb-s emulator-xxxx shell
新术语和重要的字眼以粗体显示。
作者简介
Jason Wei 2011年毕业于史丹福大学,在校期间他获得了数学计算科学专业的理学学士,同时辅修了统计学专业,接着获得了管理科学与工程专业的理学硕士,主要研究方向为机器学习。在大学期间的前两年里,他在硅谷进行第一次创业,而在他第二次创业(BillShrink公司)期间开始接触到Android系统。
从那以后,他开发了一些应用程式,从小萤幕上的娱乐程式到金融定价与建模工具等。他喜欢使用API进行开发,并参加了一些应用程式开发竞赛--赢得了包括Google、MyGengo、IndexTank等公司的奖项。除了开发应用程式之外,Jason还喜欢编写Android教程,并将自己的开发经验分享在他的部落格当中(thinkandroid.wordpress.com)。他在部落格当中所获得的成就,使他第一次成为了《Learning Android Game Programming》一书的技术审校。
目前,Jason在纽约从事量化交易员工作。
关于技术审校
Joseph Lau目前是史丹福大学的在读研究生,攻读计算机科学硕士学位。暑假期间,他在LinkedIn和Google的各类技术职位做实习生。他的业余爱好是Android程式设计,并且编写了几个Android应用程式。他认为移动应用程式是21世纪技术创新的关键部分,他还认为如果目前还没有学习Android程式设计,那幺现在就是去接触的最好时机。
Prashant Thakkar(Pandhi)具有7年以上的IT从业经验。擅长Java,类Struts、Hibernate的J2EE框架,以及相关的开放原始码框架。Prashant致力于Android已经两年多,并且还交付过关键业务企业移动应用程式。他还对在云端交付应用程式的Google App Engine感兴趣。Prashant在他的两个部落格中记录了他的技术经验,分别是http://ppandhi. wordpress.com和http://androidpartaker.wordpress.com。
目录
第1章 在Android系统中存储数据 1
1.1 使用SharedPreferences 1
1.2 SharedPreferences的常见使用案例 3
1.2.1 检查用户是不是第一次访问应用程式 3
1.2.2 应用程式最后一次更新时进行检查 4
1.2.3 保存用户登录用户名 5
1.2.4 保存应用程式的状态 5
1.2.5 快取用户的位置信息 6
1.3 内部存储方法 7
1.4 外部存储方法 9
1.5 SQLite资料库 13
1.6 总结 17
第2章 使用SQLite资料库 18
2.1 创建高级的SQLite模式 18
2.2 SQLite资料库封装器 21
2.3 调试SQLite资料库 31
2.4 总结 33
第3章 SQLite查询 34
3.1 创建SQLite查询的方法 34
3.2 SELECT语句 35
3.3 WHERE筛选器和SQL操作符 40
3.4 DISTINCT子句和LIMIT子句 42
3.5 ORDER BY子句和GROUP BY子句 45
3.6 HAVING筛选器和聚合函式 50
3.7 SQL及Java间的性能比较 56
3.8 总结 61
第4章 使用Content Providers 63
4.1 ContentProvider 63
4.1.1 实现查询方法 68
4.1.2 实现delete()和update()方法 71
4.1.3 实现insert()和getType()方法 75
4.1.4 与ContentProvider进行互动 78
4.2 实际套用案例 81
4.3 总结 82
第5章 表查询操作 83
5.1 Contacts content provider结构介绍 83
5.2 查询Contacts 85
5.3 修改Contacts 89
5.4 设定许可权 93
5.5 总结 94
第6章 UI关联 96
6.1 SimpleCursorAdapter与ListView 96
6.2 自定义CursorAdapter 100
6.3 BaseAdapter与自定义BaseAdapter 103
6.4 处理列表互动 109
6.5 对比CursorAdapters与BaseAdapters 110
6.6 总结 111
第7章 Android资料库套用 113
7.1 本地资料库套用案例 113
7.2 资料库快取 117
7.3 典型应用程式设计 119
7.4 总结 120
第8章 外部资料库 122
8.1 外部资料库的分类 122
8.2 谷歌应用程式引擎GAE与Java数据对象资料库JDO 124
8.3 GAE:一个视频游戏套用的开发案例 125
8.4 PersistenceManager与查询 128
8.5 总结 136
第9章 数据的收集与存储 137
9.1 数据收集方法 137
9.2 web抓取入门 139
9.3 扩展HTTP servlet GET/POST方法 150
9.4 调度CRON计画任务 153
9.5 总结 154
第10章 综合示例 156
10.1 实现HTTP GET请求 156
10.2 返回至Android系统:解析回响 160
10.3 最后一步:再次关联到用户界面 166
10.4 总结 169