`
mmdev
  • 浏览: 12911043 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

Android开发指南-框架主题-数据存储

阅读更多

数据存储Data Storage

概览Storage quickview

² 系统偏好:快速,轻量级存储

² 文件:存储到设备内部或可移动闪存

² 数据库:任意的结构化存储

² 支持基于网络的存储

一个典型的桌面操作系统提供了一个通用文件系统使得任何应用程序能够使用它来存储文件,这些文件可以被其它应用程序读取(可能有访问权限的设置)。Android使用一个不同的系统:在Android上,所有应用程序数据(包括文件)都是该应用程序私有的。

不过,Android同样提供了一个应用程序向其它应用程序暴露其私有数据的基本方式-通过内容提供器。内容提供器是应用程序的可选组件,用来暴露该应用程序数据的读写接口,且遵循任何可能引入的约定。内容提供器实现了一个用来请求和修改数据的基本语法,一个读取返回数据的基本机制。Android为基础数据类型如图像,音频和视频文件以及个人联系人信息提供了许多内容提供器。想要了解更多如何使用内容提供器的信息,请参见一篇单独的文章:内容提供器(Content Providers)。

无论你是否想把应用程序数据输出给别人,你总需要有一个方法来保存它。Android提供了下面4种机制来保存和获取数据:系统偏好Preferences,文件Files,数据库Databases和网络Network

系统偏好Preferences

系统偏好是一个用来存放和提取元数据类型键-值对的轻量级机制。它通常用来存放应用程序偏好,例如一个应用程序启动时所使用的默认问候或文本字体。通过调用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();

}

}

文件Files

你可以直接在移动设备或可移动存储媒介里存放文件。缺省情况下,其它应用程序不能访问这些文件。

为了从文件中读取数据,可调用Context.openFileInput()方法并传递本地文件名和文件路径给它。该方法返回一个标准的Java FileInputStream 对象。为了写一个文件,可调用Context.openFileOutput()并传递文件名和路径,这个方法也返回FileOutputStream对象。从另外的应用程序中调用这些方法将不起作用,你只能访问本地文件。

如果你有一个静态文件需要在编译时打包进应用程序,你可以保存该文件在你项目中res/raw/myDataFile,然后使用Resources.openRawResource (R.raw.myDataFile)打开它。该方法返回一个InputStream对象,你可以使用它读取文件数据。

数据库Databases

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例子代码里)中创建和组装一个新数据库的方法。你创建的任何数据库都将可以通过名字被应用程序中其它的类访问,但不能从应用程序外部访问。

网络Network

你也可以使用网络来存放和获取数据(当它可用时)。要进行网络操作,可使用如下程序包中的类:

· java.net.*

· android.net.*

分享到:
评论

相关推荐

    Android开发指南中文版-----应用程序框架

    数据存储Data Storage 52 概览Storage quickview 52 ? 系统偏好:快速,轻量级存储 52 ? 文件:存储到设备内部或可移动闪存 52 ? 数据库:任意的结构化存储 52 ? 支持基于网络的存储 52 系统偏好Preferences 53 文件...

    [14本经典Android开发教程]-3-Android SDK 中文开发文档

    [14本经典Android开发教程]-3-Android SDK 中文开发文档 什么是 Android? Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。Beta版的 Android SDK 提供了在Android 平台上...

    Android高级编程--源代码

     由于Android构建在开源代码的框架之上,而且提供了强大的SDK库和开放的理念,所以它为广大的没有任何移动应用程序开发经验的新手开辟了一条开发完美的移动应用程序的康庄大道。而富有经验的移动开发人员现在也可以...

    新版Android开发教程.rar

    ----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 ...• SQLite SQLite SQLite SQLite 用作结构化的数据存储 • 多媒体支持 包括常见的音频、视频和...

    《Google Android开发入门与实战》.pdf

    第8章 移动信息仓库——android的数据存储操作 136 8.1 android数据存储概述 136 8.2 轻轻地我保护——sharedpreferences存储 136 8.3 谁的文件,谁主宰——文件存储 140 8.4 打造自己的数据库存储——...

    android 中文帮助手册 开发指南 API

    从这里开始 安装SDK 更新SDK 开发与调试 Hello Android 应用程序解析 记事本教程 开发工具 应用程序模型 应用程序生命周期 开发应用程序 用户界面工具 应用构成部分 数据存储与取回 安全模型 资源管理与多国版本 ...

    Android开发权威指南

    本书内容不仅详细讲解了Android框架、Android组件、用户界面、游戏开发、数据存储、多媒体发和网络开发等基础适应,而且还深入阐述了传感器、语音识别、桌面组件开发、多媒体开发、OpenGLES、HTML5、Android NDK编程...

    Android开发者指南

    然后根据需要浏览其他的主题——从设计用户界面和设置资源文件到存储数据和使用权限。 Ø 关于Android Market(Android Market Topics) 这个主题主要涉及Android Markert发布和付费应用的一些内容,例如,如何在...

    Android应用程序开发教程PDF电子书完整版、Android开发学习教程

    • SQLite SQLite SQLite SQLite 用作结构化的数据存储 • 多媒体支持 包括常见的音频、视频和静态图像格式 (如 MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF) • GSM GSM GSM GSM 电话技术 (依赖于硬件) • ...

    免费下载-Android SDK 中文开发文档

    · SQLite 用作结构化的数据存储 · 多媒体支持包括常见的音频、视频和静态图像格式(如MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF) · GSM 电话技术(依赖于硬件) · 蓝牙 Bluetooth, EDGE, 3G, 和WiFi (依赖...

    TensorFlow-Lite-Object-Detection-on-Android-and-Raspberry-Pi:本教程显示了如何在Android设备,Raspberry Pi等上训练,转换和运行TensorFlow Lite对象检测模型!

    展示如何训练TensorFlow Lite对象检测模型并在Android,Raspberry Pi等上运行它们的指南! 介绍 TensorFlow Lite是用于在资源受限的边缘设备上部署轻量级深度学习模型的优化框架。 TensorFlow Lite模型具有更快的...

    Android中文开发手册

    • SQLite 用作结构化的数据存储 • 多媒体支持 包括常见的音频、视频和静态图像格式 (如 MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF) • GSM 电话技术 (依赖于硬件) • 蓝牙Bluetooth, EDGE, 3G, 和 WiFi ...

    Android开发教程&笔记

    SQLite 用作结构化的数据存储 ; 多媒体支持包括常见的音频、视频和静态图像格式(如MPEG4, H.264, MP3, AAC, AMR, JPG, PNG,GIF) ; GSM 电话技术(依赖于硬件) ; 蓝牙Bluetooth, EDGE, 3G, 和WiFi(依赖于硬件) ...

    Android SDK 中文开发文档

    · SQLite 用作结构化的数据存储 · 多媒体支持包括常见的音频、视频和静态图像格式(如MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF) · GSM 电话技术(依赖于硬件) · 蓝牙 Bluetooth, EDGE, 3G, 和WiFi (依赖...

    android开发中文教程

    SQLite:用作结构化的数据存储 多媒体支持:包括常见的音频、视频和静态印象文件格式(如MPEG4、H.264、MP3、 AAC、AMR、JPG、PNG、GIF) GSM 电话:(依赖于硬件) 蓝牙Bluetooth、EDGE、3G、and WiFi:(依赖于...

    《Android高级编程》

    1.7 运行Android的环境 1.8 从事Android开发的原因 1.8.1 推动Android普及的因素 1.8.2 Android的独到之处 1.8.3 改变移动开发格局 1.9 开发框架简介 1.9.1 开发包中的资源 1.9.2 理解Android软件栈 1.9.3 Dalvik...

    Android程序设计基础

    书中还结合数独游戏等实例更加形象生动地讲解了 android开发的基本流程,且每章最后都有一个 “快速阅读指南 ”,更加方便了读者的阅读。.  本书内容完整丰富,具有较强的通用性,读者都能通过本书快速学习 ...

    HTML5移动Web开发指南.pdf

    2011年也是移动互联网高速发展的一年,随着iPhone、Android等智能设备的迅速普及,以及Web技术跨平台等优点更广泛的为人所知,移动Web技术逐渐成为大家关注的新热点之一。国内移动Web技术中文资源相对缺乏,社区尚待...

    Android高级编程 part1

    作为使用AndroidSDK构建这些应用程序的实用指南书籍,《Android高级编程》从始至终穿插了一系列示例项目,每个项目都引入Android的新功能和新技术,以助您达到最圆满的学习效果。书中介绍Android的所有基本功能,并...

Global site tag (gtag.js) - Google Analytics