理解 Android 本地数据存储 API
利用首选项、SQLite 和内部及外部内存 API
C. Enrique Ortiz, 开发人员兼作家, About Mobility Weblog
简介: 对于需要跨应用程序执行期间或生命期而维护重要信息的应用程序来说,能够在移动设备上本地存储数据是一种非常关键的功能。作为一名开发人员,您经常需要存储诸如用户首选项或应用程序配置之类的信息。您还必须根据一些特征(比如访问可见性)决定是否需要涉及内部或外部存储器,或者是否需要处理更复杂的、结构化的数据类型。跟随本文学习 Android 数据存储 API,具体来讲就是首选项、SQLite 和内部及外部内存 API。
常用缩写词
? ? ? ? ? ? ? ? ?
ADT:Android 开发工具 API:应用程序编程接口 IDE:集成开发环境 JDK:Java 开发工具包
JSON:JavaScript 对象表示法 SDK:软件开发工具包 SQL:结构化查询语言 UI:用户界面
XML:可扩展标记语言
样例应用程序
为了突出 Android 应用程序开发的本地存储方面,我这里介绍一个样例应用程序,它允许您测试各种类型 API 的执行。有 源代码 可供下载。该应用程序支持 图 1 中的操作。
图 1 列出了以下用例:
管理和存储首选项
? 从应用程序资产加载信息
? 将信息导出到内部内存、外部内存和本地数据库
?
从内部内存和本地数据库读取数据 ? 清除已存储的信息 ? 在屏幕上查看信息
?
通篇文章中,详细介绍了在应用程序中使用本地存储,如下:
从用户捕获首选项,本地存储起来,并在整个应用程序中加以使用。 ? 从内部应用程序资产检索一个用户图片,存储在本地内部内存和外部内存中,并呈现在屏幕上。
? 从应用程序的资产检索一个 JSON 格式的好友列表。解析并存储在本地内部内存、外部内存和关系数据库中,再呈现在屏幕上。
?
样例应用程序定义了 表 1 中的类。
表 1. 样例应用程序中的类
类 说明
Main Activity;大多数样例代码都驻留在这
MainActivity
里
Friend 描绘一个 Friend
AppPreferenceActivity Preferences Activity 和屏幕 DBHelper 一个用于 SQLite 数据库管理的帮助器类 示例应用程序使用了两种类型的数据。第一种是应用程序首选项,存储为名-值对。对于首选项,定义了以下信息:
一个 filename,用于加载和存储好友姓名列表 ? 一个 filename,用于加载和存储用户的一幅图片
? 一个 flag,如果设置了,那么表示在应用程序启动时自动删除所有已存储的数据
?
第二种类型的数据是好友列表。好友列表最初表示为 Facebook Graph API JSON 格式,包含一组姓名和好友对象(参见 清单 1)。
清单 1. 好友列表(Facebook Graph API JSON 格式) {
\ {
\ \ } ] }
上面的简单格式使得 Friend 对象和数据库模式也简单。清单 2 展示了 Friend 类。
清单 2. Friend 类
package com.cenriqueortiz.tutorials.datastore;
import android.graphics.Bitmap; /**
* Represents a Friend */
public class Friend { public String id; public String name; public byte[] picture;
public Bitmap pictureBitmap;; }
除了 ID 和姓名之外,样例应用程序也保留了对好友图片的引用。尽管样例应用程序没有使用这些引用,但是您很容易扩展样例应用程序,以从 Facebook 检索图片并显示在主屏幕中。
数据库模式包含单个表,用于存储 Friend 的信息。表有三列: 惟一的 ID 或键 ? Facebook ID ? Friend 的姓名
?
清单 3 展示了相应关系表声明的 SQL 语句。
清单 3. Friend 数据库表
db.execSQL(\autoincrement, \
+ \
根据此信息,您可以在主屏幕上显示姓名;使用 ID,您可以检索所选用户的额外详细信息。在样例应用程序中,只显示了姓名。检索额外信息留给您去试验。注意,您很容易更改代码,以直接转向 Facebook。 回页首 存储应用程序首选项 本节介绍 Preferences API 和屏幕。Android API 提供很多方式处理首选项。其中一种方式是直接使用 SharedPreferences,并使用您自己的屏幕设计和首选项管理。第二种方法是使用 PreferenceActivity。PreferenceActivity 自动负责首选项如何呈现在屏幕上(默认情况下,看起来跟系统首选项一样),并通过使用 SharedPreferences 在用户与每个首选项交互时自动存储或保存首选项。 为了简化样例应用程序,使用一个 PreferenceActivity 来管理首选项和首选项屏幕(参见 图 2)。首选项屏幕显示两个部分:Assets 和 Auto Settings。在 Assets 下,您可以为 Friends List 和 Picture 选项输入文件名。在 Auto Settings 下,您可以选中一个复选框,以便在启动时删除信息。 图 2. 实现的 Preferences 屏幕
在 图 2 中,布局是用 XML 以声明式方法定义的(不是以编程方式);声明式 XML 是首选方法,因为它保持了源代码的清晰可读。清单 4 展示了 Preferences UI 的 XML 声明。
清单 4. Preferences 屏幕的 XML 声明
xmlns:android=\ android:id=\ android:key=\ >
android:key=\ android:title=\ android:summary=\ android:defaultValue=\ /> android:key=\ android:title=\ android:summary=\ android:defaultValue=\ />
android:key=\ android:title=\ android:summary=\ android:defaultValue=\ />
PreferenceScreen 包含 EditTextPreference 的两个实例、一个
CheckBoxPreference 和两个由 PreferenceCategory 定义的类别组(一个用于 Asset,另一个用于 Auto Settings)。
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库Android 本地数据存储在线全文阅读。
相关推荐: