数据存储Data Storage
² 系统偏好:快速,轻量级存储
² 文件:存储到设备内部或可移动闪存
² 数据库:任意的结构化存储
² 支持基于网络的存储
一个典型的桌面操作系统提供了一个通用文件系统使得任何应用程序能够使用它来存储文件,这些文件可以被其它应用程序读取(可能有访问权限的设置)。Android使用一个不同的系统:在Android上,所有应用程序数据(包括文件)都是该应用程序私有的。
不过,Android同样提供了一个应用程序向其它应用程序暴露其私有数据的基本方式-通过内容提供器。内容提供器是应用程序的可选组件,用来暴露该应用程序数据的读写接口,且遵循任何可能引入的约定。内容提供器实现了一个用来请求和修改数据的基本语法,一个读取返回数据的基本机制。Android为基础数据类型如图像,音频和视频文件以及个人联系人信息提供了许多内容提供器。想要了解更多如何使用内容提供器的信息,请参见一篇单独的文章:内容提供器(Content Providers)。
无论你是否想把应用程序数据输出给别人,你总需要有一个方法来保存它。Android提供了下面4种机制来保存和获取数据:系统偏好Preferences,文件Files,数据库Databases和网络Network。
系统偏好是一个用来存放和提取元数据类型键-值对的轻量级机制。它通常用来存放应用程序偏好,例如一个应用程序启动时所使用的默认问候或文本字体。通过调用Context.getSharedPreferences() 来读写数值。如果你想分享给应用程序中的其它组件,可以为你的偏好集分配一个名字,或者使用没有名字的Activity.getPreferences()方法来保持对于该调用程序的私有性。你不能跨应用程序共享偏好(除了使用一个内容提供器)。
下面是一个为计算器设置按键静音模式的例子:
import android.app.Activity;
import android.content.SharedPreferences;
public class Calc extends Activity {
public static final String PREFS_NAME = "MyPrefsFile";
. . .
@Override
protected void onCreate(Bundle state){
super.onCreate(state);
. . .
// Restore preferences
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
boolean silent = settings.getBoolean("silentMode", false);
setSilent(silent);
}
@Override
protected void onStop(){
super.onStop();
// Save user preferences. We need an Editor object to
// make changes. All objects are from android.context.Context
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("silentMode", mSilentMode);
// Don't forget to commit your edits!!!
editor.commit();
}
}
你可以直接在移动设备或可移动存储媒介里存放文件。缺省情况下,其它应用程序不能访问这些文件。
为了从文件中读取数据,可调用Context.openFileInput()方法并传递本地文件名和文件路径给它。该方法返回一个标准的Java FileInputStream 对象。为了写一个文件,可调用Context.openFileOutput()并传递文件名和路径,这个方法也返回FileOutputStream对象。从另外的应用程序中调用这些方法将不起作用,你只能访问本地文件。
如果你有一个静态文件需要在编译时打包进应用程序,你可以保存该文件在你项目中res/raw/myDataFile,然后使用Resources.openRawResource (R.raw.myDataFile)打开它。该方法返回一个InputStream对象,你可以使用它读取文件数据。
Android API包含对创建和使用SQLite数据库的支持。每个数据库都是创建它的应用程序所私有的。
这个SQLiteDatabase对象代表了一个数据库并包含与之交互的方法-生成查询和管理数据。为了创建数据库,调用SQLiteDatabase.create()并同时子类化SQLiteOpenHelper。
作为支持SQLite数据库的一部分,Android暴露了数据库管理函数,这让你可以存储复杂的数据集合,这些数据被包装到有用的对象里。比如,Android为联系人信息定义了一个数据类型;它由很多字段组成,其中包括姓,名(字符串),地址信息和电话号码(也是字符串),照片(位图图像),以及更多其它个人信息。
Android装载了sqlite3数据工具, 利用这些工具你可以浏览表内容,运行SQL命令,并执行SQLite数据库上的其它有用的函数。请查阅检查数据库(Examine databases (sqlite3))得知如何运行这个程序。
所有的数据库,SQLite以及其它,都被保存在设备如下目录里:
/data/data/package_name/databases.
讨论创建多少表格,包含哪些字段以及它们之间如何连接超出了本文的范围,不过Android并没有引入任何在标准SQLite概念之外的限制。我们确实推荐包含一个自增长数值的关键域,作为一个唯一ID用来快速查找一个记录。这对于私有数据并不必要,但如果你实现了一个内容提供器,你必须包含这样一个唯一ID字段。请参见Content Providers文档以获取关于该字段的更多信息,以及NotePadProvider类(在NotePad例子代码里)中创建和组装一个新数据库的方法。你创建的任何数据库都将可以通过名字被应用程序中其它的类访问,但不能从应用程序外部访问。
你也可以使用网络来存放和获取数据(当它可用时)。要进行网络操作,可使用如下程序包中的类:
· java.net.*
· android.net.*
分享到:
相关推荐
### Android开发指南中文版——应用程序框架 #### 一、应用程序基础(Application Fundamentals) 在Android开发中,应用程序的基础架构包括以下几个核心部分: ##### 关键类 Android应用的核心是几个关键类: 1. *...
4. **数据存储**:Android支持多种数据存储方式,如SQLite数据库、SharedPreferences、文件系统和网络存储。文档会详细阐述如何操作数据库,以及在不同场景下选择合适的数据存储方式。 5. **网络通信**:Android...
【Android程序员指南-J.F.】是一本专门为初学者设计的Android开发教程,旨在帮助读者从零开始掌握Android应用开发的基本技能。以下是对该资源中可能包含的重要知识点的详细阐述: 1. **Android基础**:首先,书中会...
【标题】"Android--开发--jChat1.3.rar" 提供的是一个关于Android平台上的即时通讯应用jChat的开发版本1.3。这个压缩包很可能是包含了该项目的所有源代码、资源文件、构建脚本和其他相关开发文档,使得开发者能够...
《Android_开发指南中文版》是一本面向开发者深入学习Android平台开发的重要参考资料。这份PDF文档包含详细的目录和书签,方便读者系统性地理解和掌握Android应用开发的核心技术。以下是根据标题和描述提炼出的一些...
- Android推荐遵循Material Design指南来设计界面,包括颜色方案、字体样式和动画效果,以提供一致的用户体验。 4. **验证逻辑**: - 输入验证:确保用户名、邮箱或密码的有效性。 - 错误处理:当输入无效时,...
**Qt 5.9 C++ 开发指南:深入理解Qt核心特点与源码解析** Qt是一个流行的开源跨平台应用程序开发框架,广泛应用于桌面、移动和嵌入式系统。Qt 5.9是其一个重要的版本,它在稳定性和性能上都有显著提升,同时也引入...
16. **安全与隐私**:了解Android的安全框架,如何防止逆向工程,以及如何处理用户数据的安全传输。 17. **多设备兼容性**:适配不同屏幕尺寸、分辨率、Android版本,使用Material Design指南来创建一致的用户体验...
《Android开发权威指南》是一本深受开发者欢迎的书籍,它深入浅出地讲解了Android应用开发的各个方面。这本书的源代码包含了许多实例和练习,帮助读者更好地理解和掌握Android开发技术。通过阅读源代码,开发者可以...
同时,书中会详细讲解布局管理、用户界面设计、数据存储、网络通信、多媒体处理以及Android权限管理等实际开发中不可或缺的部分。 在第二版中,作者通常会更新最新的Android版本特性,如最新的SDK工具、API级别的...
根据提供的信息,《Android开发权威指南》是一本针对Android开发初学者的理想书籍,它不仅适合希望进入移动应用开发领域的新人,也适用于已经有一定基础并希望进一步提升技能的开发者。以下是对该书中可能涵盖的关键...
2. 应用程序框架的涵盖范围:文档翻译并整理了应用程序框架部分,这是Android应用开发的核心,覆盖了所有主要概念,包括应用程序组件、Intent使用、进程与线程管理、用户界面设计、数据存储、资源管理等。...
[14本经典Android开发教程]-3-Android SDK 中文开发文档 什么是 Android? Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。Beta版的 Android SDK 提供了在Android 平台上...
《Android开发指南中文版》是一本面向初学者和进阶开发者的重要参考资料,它详细阐述了Android应用程序开发的核心概念和技术。该指南由iefreer@hotmail.com翻译,并基于Android SDK 1.5版本的英文开发文档,内容经过...
### Android开发指南中文版知识点概览 #### 一、Android平台概述 - **定义与特点**:Android是一种基于Linux内核的开源操作系统,主要用于移动设备,如智能手机和平板电脑等。它具有高度可定制性、丰富的API接口...
在使用AndLang框架时,开发者需要熟悉其提供的组件和约定,遵循框架的使用指南,以便充分利用其优势,快速构建稳定、高效的Android应用程序。同时,持续关注框架的更新和社区支持,可以帮助开发者保持项目与时俱进,...
在压缩包子文件的文件名"ffmpeg-android-java-2a627f6ecd.aar"中,".aar"扩展名表示这是一个Android Archive,它是Android Studio用于分发库的一种格式,包含编译后的Java字节码、资源文件、元数据等。这个.AAR文件...
总的来说,《Android开发权威指南》是一本内容丰富的教程,它不仅涵盖了Android开发的基础知识,也包含了高级主题和最佳实践,是开发者提升技能和解决问题的必备参考书籍。通过深入阅读和实践,读者可以逐步成为一名...