导语
内容提要
本书介绍了关系型数据库和SQLite相关的理论知识,同时也介绍了在Android开发中和数据相关的方方面面,包括数据类型的定义、数据的增删改查、数据的持久化和展示、使用content provider共享数据、使用Intent API传递数据,以及和远程服务器进行数据交互等。本书的内容从相关API的基本使用到最佳实践都有涉猎,对于提升Android开发水平,写出更高质量的应用很有帮助。
阅读本书,并不需要对Android开发有很多的经验,但是要求读者有一些Android开发基础,理解Android的基础组件。如果对Android/Java的线程模型有一些了解的话,对快速理解内容会很有帮助。
作者简介
亚当·斯特劳德(Adam Stroud)是Every Labs Inc.的联合创始人、软件架构师和Android Lead,他负责ChefNightly的开发,并负责Android开发的各个方面。他是RunKeeper和Mustbin等多家初创公司的早期雇员,自2010年以来一直开发Android应用程序。Stroud是《专业Android传感器编程》的合著者(Wrox, 2012年),并就Android相关主题进行了广泛的演讲。
目录
第1章 关系型数据库
数据库简史
层次模型
网状模型
关系模型简介
关系模型
关系
关系的属性
关联
参照完整性
关系语言
关系代数
关系演算
数据库语言
总结
第2章 SQL介绍
数据定义语言
表
索引
视图
触发器
数据操作语言
INSERT
UPDATE
DELETE
查询
ORDER BY
连接
总结
第3章 SQLite介绍
SQLite的特性
SQLite的特征
外键支持
全文索引
原子事务
多线程支持
SQLite的不足
有限的连接支持
视图只读
有限的ALTER TABLE支持
SQLite数据类型
总结
第4章 Android中的SQLite
移动设备上的数据持久化
Android中的数据库API
SQLiteOpenHelper
SQLiteDatabase
数据库升级策略
重建数据库
修改现有数据库
复制表和删除表
数据访问和主线程
查看数据库中的数据
使用adb访问数据库
使用第三方工具访问数据库
总结
第5章 在Android中使用数据库
操作数据
行插入
行更新
行替换
行删除
事务
使用事务
事务与性能
查询
快捷查询方法
原始查询方法
Cursor
读取Cursor数据
管理Cursor
CursorLoader
创建CursorLoader
启用CursorLoader
重启CursorLoader
总结
第6章 Content Provider
REST API
URI
暴露数据
方法实现
Content Resolver
对其他应用程序暴露Content Provider
Provider级权限
单独读写权限
URI路径权限
Content Provider权限
Content Provider合约类
允许外部程序访问
实现Content Provider
继承android.content.ContentProvider
insert()
delete()
update()
query()
getType()
何时该使用Content Provider
劣势
优势
总结
第7章 数据库和UI
从数据库到UI
使用cursor loader处理线程交互
绑定cursor的数据到UI
cursor作为观察者
在Activity中使用Content Provider
Activity的实现细节
创建cursor Loader
处理返回数据
处理数据变化
总结
第8章 使用Intent共享数据
发送Intent
显式Intent
隐式Intent
启动一个目标Activity
接收隐式Intent
构造Intent
Action
Extra
Extras数据类型
什么不该放到Intent中
Share菜单
总结
第9章 网络通信
REST和Web Services
REST简介
REST风格的Web API
访问Web API
使用Android标准API访问Web Service
使用Retrofit访问Web Service
使用Volley访问Web Service
数据持久化
数据传输和电量消耗
数据传输和用户体验
本地持久化
SyncAdapter
AccountAuthenticator
SyncAdapter
手动同步远程数据
RxJava简介
Retrofit+RxJava
使用RxJava进行数据同步
总结
第10章 Data Binding
在项目中使用Data Binding
View的Data Binding布局
将Activity和布局绑定
使用Binding对象更新View
处理数据变化
使用Data Binding来去除重复代码
Data Binding的表达式语言
总结