数据存储Data Storage
数据存储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.*
转载于:https://www.cnblogs.com/xiangtongpeng/archive/2011/12/25/2300788.html
数据存储Data Storage相关推荐
- NEAR官方文档翻译(三)基础(Basics)- 数据存储(Data Storage)
文章目录 数据存储 概述 AssemblyScript集合类型 大O记号 Big-O Notation Gas消耗举例 Gas Consumption Examples PersistentVecto ...
- 【android】音乐播放器之数据存储总结
学习Android有一个多月,看完了<第一行代码>以及mars老师的第一期视频通过音乐播放器小项目加深对知识点的理解.从本文开始,将详细的介绍简单仿多米音乐播放器的实现,以及网络解析数据获 ...
- Data Storage(数据存储)之内部储存(Internal Storage)
Data Storage(数据存储)之内部储存(Internal Storage) 读取手机内部储存,Activity 中调用 openFileOutput(file_name, mode)方法返回F ...
- 鸿蒙开发-使用Storage实现数据存储
场景 鸿蒙开发-从搭建todolist待办事项来学习组件与js之间的交互: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1183 ...
- 非结构化文件转移服务器,非结构化数据存储管理方法,服务器和系统 Unstructured data storage management method, and a system server...
摘要: 本文提供一种非结构化数据存储管理方法,服务器和系统,解决现有技术中非结构化存储管理系统无法支撑大量的小文件及其元数据的存储和快速访问的问题. This article provides a m ...
- Android数据存储(3):External Storage
Android系统的数据存储第三种方式是External Storage,即是外部存储. 外部存储通常存储的是公共的数据,存储位置是在扩展卡或SD卡上,存储目录:/mnt/sdcard/Android ...
- 微信小程序开发之——数据存储Storage
一 概述 微信小程序默认创建的应用,点击用户头像,会显示log日志,日志存储在Storage中,key值是logs,value值是Array数组,数组的长度为8 二 logs日志分析 2.1 读取lo ...
- 大数据存储引擎 NoSQL极简教程 An Introduction to Big Data: NoSQL
本文路线图: NoSQL简介 文档数据库 键值数据库 图数据库 Here's the roadmap for this fourth post on NoSQL database: Introduct ...
- 数据存储:Internal Storage与Shared Preferences
Android提供五种持久化数据存储的方式:Shared Preferences.Internal Storage.External Storage.SQLite Databases和Network ...
最新文章
- CSS2020聚焦新基建 腾讯发布云原生安全体系 助力客户备战云上“主战场”
- # 2017-2018-1 20155224 《信息安全系统设计基础》第九周学习总结
- big endian and little endian
- APPStore 审核收集
- Git简介及其下载 安装 卸载
- 【Docker】安装与常用命令
- ARM汇编中lr(r14)寄存器的作用
- SSM+Maven+Dubbo+Zookeeper简单项目实战以及易错注意点
- 【离散数学】命题逻辑联结词的自然语言表述
- WordPress插件-WBOLT热门关键词推荐插件v1.3.0 Pro绿色版
- css 浮动效果 0302
- latex 学习资料
- 老徐FrankXuLei受邀为花旗银行讲授《微软WCF服务分布式开发与SOA架构设计课程》...
- Altera PLL失锁的原因
- python3.7下载 numpy
- app应用软件开发流程是怎样的?
- 谷粒学苑 —— 3、后台系统前端项目创建
- window跳转,重定向
- GDB基本命令(整合)
- 什么是机器人编程课程
热门文章
- python使用界面-用python编写简单ui界面窗口
- python web-2019年Python Web五大主流框架
- python画曲线图例-如何使用python画曲线图
- python和c学习-学习 Python与C相互调用
- python类装饰器详解-Python类中的装饰器在当前类中的声明与调用详解
- python好吗-Python现在就业前景好吗?
- 自学python入门-学python入门看什么书
- python在中国的发展-python在中国的现状和发展趋势
- 学python可以做什么职业好-学了那么多年python到底可以找什么工作?
- python语言的理解-使用Python语言理解递归