Table of Contents
Preface xv
Acknowledgments xix
About the Author xxi
Chapter 1: Relational Databases 1
History of Databases 1
The Relational Model 3
Relational Languages 9
Database Languages 14
Summary 15
Chapter 2: An Introduction to SQL 17
Data Definition Language 17
Data Manipulation Language 28
Queries 32
Summary 37
Chapter 3: An Introduction to SQLite 39
SQLite Characteristics 39
SQLite Features 39
What SQLite Does Not Support 42
SQLite Data Types 43
Summary 44
Chapter 4: SQLite in Android 47
Data Persistence in Phones 47
Android Database API 47
Strategies for Upgrading Databases 58
Database Access and the Main Thread 60
Exploring Databases in Android 61
Summary 77
Chapter 5: Working with Databases in Android 79
Manipulating Data in Android 79
Transactions 87
Running Queries 89
Cursors 91
CursorLoader 94
Summary 99
Chapter 6: Content Providers 101
REST-Like APIs in Android 101
Content URIs 102
Exposing Data with a Content Provider 102
Exposing a Remote Content Provider to External Apps 108
Content Provider Contract 112
Allowing Access from an External App 114
Implementing a Content Provider 115
When Should a Content Provider Be Used? 132
Summary 135
Chapter 7: Databases and the UI 137
Getting Data from the Database to the UI 137
Cursors as Observers 143
Accessing a Content Provider from an Activity 145
Summary 161
Chapter 8: Sharing Data with Intents 163
Sending Intents 163
Receiving Implicit Intents 166
Building an Intent 167
ShareActionProvider 173
Summary 175
Chapter 9: Communicating with Web APIs 177
REST and Web Services 177
Accessing Remote Web APIs 179
Persisting Data to Enhance User Experience 206
Android SyncAdapter Framework 207
Manually Synchronizing Remote Data 218
Summary 229
Chapter 10: Data Binding 231
Adding Data Binding to an Android Project 231
Data Binding Layouts 232
Using Data Binding to Replace Boilerplate Code 242
Data Binding Expression Language 246
Summary 247
Index 249