原址:http://apps.hi.baidu.com/share/detail/23485923
Android中数据存储的5种方法
简介:这是Android中数据存储的5中方法的详细页面,介绍了和手机软件,Android Android中数据存储的5中方法有关的知识,
Android数据存储
Android提供了5种方式存储数据:
--使用SharedPreferences存储数据;
--文件存储数据;
--SQLite数据库存储数据;
--使用ContentProvider存储数据;
--网络存储数据;
先说下,Preference,File, DataBase这三种方式分别对应的目录是/data/data/Package Name/Shared_Pref, /data/data/Package Name/files, /data/data/Package Name/database 。
在Android中通常使用File存储方式是用Context.openFileOutput(String fileName, int mode)和Context.openFileInput(String fileName)。
Context.openFileOutput(String fileName, int mode)生成的文件自动存储在/data/data/Package Name/files目录下,其全路径是/data/data/Package Name/files/fileName 。注意下,这里的参数fileName不可以包含路径分割符(如"/")。
通常来说,这种方式生成的文件只能在这个apk内访问。但这个结论是指使用Context.openFileInput(String fileName)的方式。使用这种方式,每个apk只可以访问自己的/data/data/Package Name/files目录下的文件,原因很简单,参数fileName中不可以包含路径分割符,Android会自动在/data/data/Package Name/files目录下寻找文件名为fileName的文件。
一:使用SharedPreferences存储数据
首先说明SharedPreferences存储方式,它是Android提供的用来存储一些简单配置信息的一种机制,例如:登录用户的用户名与密码。其采用了Map数据结构来存储数据,以键值的方式存储,可以简单的读取与写入,具体实例如下:
void ReadSharedPreferences(){
String strName,strPassword;
SharedPreferences user = getSharedPreferences(“user_info”,0);
strName = user.getString(“NAME”,””);
strPassword = user getString(“PASSWORD”,””);
}
void WriteSharedPreferences(String strName,String strPassword){
SharedPreferences user = getSharedPreferences(“user_info”,0);
uer.edit();
user.putString(“NAME”, strName);
user.putString(“PASSWORD” ,strPassword);
user.commit();
}
数据读取与写入的方法都非常简单,只是在写入的时候有些区别:先调用edit()使其处于编辑状态,然后才能修改数据,最后使用commit()提交修改的数据。实际上SharedPreferences是采用了XML格式将数据存储到设备中,在DDMS中的File Explorer中的/data/data/<package name>/shares_prefs下。以上面的数据存储结果为例,打开后可以看到一个user_info.xml的文件,打开后可以看到:
<?xml version=”1.0″ encoding=”UTF-8″?>
<map>
<string name=”NAME”>moandroid</string>
<string name=” PASSWORD”>SharedPreferences</string>
</map>
使用SharedPreferences是有些限制的:只能在同一个包内使用,不能在不同的包之间使用。
二:文件存储数据
文件存储方式是一种较常用的方法,在Android中读取/写入文件的方法,与Java中实现I/O的程序是完全一样的,提供了openFileInput()和openFileOutput()方法来读取设备上的文件。FilterInputStream, FilterOutputStream等可以到Java io package说明中去详细学习,不再此详细说明,具体实例如下:
String fn = “moandroid.log”;
FileInputStream fis = openFileInput(fn);
FileOutputStream fos = openFileOutput(fn,Context.MODE_PRIVATE);
除此之外,Android还提供了其他函数来操作文件,详细说明请阅读Android SDK。
三:网络存储数据
网络存储方式,需要与Android 网络数据包打交道,关于Android 网络数据包的详细说明,请阅读Android SDK引用了Java SDK的哪些package?。
四:ContentProvider
1、ContentProvider简介
当应用继承ContentProvider类,并重写该类用于提供数据和存储数据的方法,就可以向其他应用共享其数据。虽然使用其他方法也可以对外共享数据,但数据访问方式会因数据存储的方式而不同,如:采用文件方式对外共享数据,需要进行文件操作读写数据;采用sharedpreferences共享数据,需要使用sharedpreferences API读写数据。而使用ContentProvider共享数据的好处是统一了数据访问方式。?
2、Uri类简介
Uri代表了要操作的数据,Uri主要包含了两部分信息:1.需要操作的ContentProvider ,2.对ContentProvider中的什么数据进行操作,一个Uri由以下几部分组成:
1.scheme:ContentProvider(内容提供者)的scheme已经由Android所规定为:content://。
2.主机名(或Authority):用于唯一标识这个ContentProvider,外部调用者可以根据这个标识来找到它。
3.路径(path):可以用来表示我们要操作的数据,路径的构建应根据业务而定,如下:
? 要操作contact表中id为10的记录,可以构建这样的路径:/contact/10
? 要操作contact表中id为10的记录的name字段, contact/10/name
? 要操作contact表中的所有记录,可以构建这样的路径:/contact?
要操作的数据不一定来自数据库,也可以是文件等他存储方式,如下:
要操作xml文件中contact节点下的name节点,可以构建这样的路径:/contact/name
如果要把一个字符串转换成Uri,可以使用Uri类中的parse()方法,如下:
Uri uri = Uri.parse("content://com.changcheng.provider.contactprovider/contact")
3、UriMatcher、ContentUrist和ContentResolver简介
因为Uri代表了要操作的数据,所以我们很经常需要解析Uri,并从Uri中获取数据。Android系统提供了两个用于操作Uri的工具类,分别为UriMatcher 和ContentUris 。掌握它们的使用,会便于我们的开发工作。
? UriMatcher:用于匹配Uri,它的用法如下:
1.首先把你需要匹配Uri路径全部给注册上,如下:
//常量UriMatcher.NO_MATCH表示不匹配任何路径的返回码(-1)。
UriMatcher uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
//如果match()方法匹配content://com.changcheng.sqlite.provider.contactprovider/contact路径,返回匹配码为1
uriMatcher.addURI(“com.changcheng.sqlite.provider.contactprovider”, “contact”, 1);//添加需要匹配uri,如果匹配就会返回匹配码
//如果match()方法匹配 content://com.changcheng.sqlite.provider.contactprovider/contact/230路径,返回匹配码为2
uriMatcher.addURI(“com.changcheng.sqlite.provider.contactprovider”, “contact/#”, 2);//#号为通配符
2.注册完需要匹配的Uri后,就可以使用uriMatcher.match(uri)方法对输入的Uri进行匹配,如果匹配就返回匹配码,匹配码是调用addURI()方法传入的第三个参数,假设匹配content://com.changcheng.sqlite.provider.contactprovider/contact路径,返回的匹配码为1。
?
ContentUris:用于获取Uri路径后面的ID部分,它有两个比较实用的方法:
? withAppendedId(uri, id)用于为路径加上ID部分
? parseId(uri)方法用于从路径中获取ID部分
? ContentResolver:当外部应用需要对ContentProvider中的数据进行添加、删除、修改和查询操作时,可以使用ContentResolver 类来完成,要获取ContentResolver 对象,可以使用Activity提供的getContentResolver()方法。 ContentResolver使用insert、delete、update、query方法,来操作数据。
五:总结说明
以上5中存储方式,在以后的开发过程中,根据设计目标、性能需求、空间需求等找到合适的数据存储方式。Android 中的数据存储都是私有的,其他应用程序都是无法访问的,除非通过ContentResolver获取其他程序共享的数据。采用文件方式对外共享数据,需要进行文件操作读写数据;采用sharedpreferences共享数据,需要使用sharedpreferences API读写数据。而使用ContentProvider共享数据的好处是统一了数据访问方式。
分享到:
相关推荐
Android 平台中实现数据存储的五种方式分别是:使用 SharedPreferences 存储数据、文件存储数据、SQLite 数据库存储数据、使用 ContentProvider 存储数据和网络存储数据。 使用 SharedPreferences 存储数据 ...
本文将详细介绍Android中的四种主要数据存储方式:SharedPreferences、File、SQLite数据库以及网络存储。 1. SharedPreferences: SharedPreferences是Android提供的一种轻量级的数据存储方式,适合存储用户偏好...
SharedPreferences是Android提供的一种轻量级的数据存储方式,主要用于存储简单的键值对数据,如int、long、boolean、String、float等基本数据类型。它类似于HashMap,但限制了只能存储基本类型。SharedPreferences...
内部文件存储是 Android 中的一种数据存储方式,它可以存储应用程序中的文件数据。内部文件存储的优点是可以存储大量数据,缺点是存储空间有限。内部文件存储的使用方法是通过 openFileOutput() 方法来创建文件,并...
在Android系统中,数据存储是应用程序管理用户数据的...总结,Android数据存储涉及多个层次和方式,根据具体需求选择合适的方法至关重要。在实际开发中,结合使用这些存储机制,可以有效地管理和维护应用程序的数据。
本教程将详细阐述Android中五种常用的数据存储方法,帮助开发者更好地理解如何在Android环境中有效地管理数据。 1. SharedPreferences SharedPreferences是一种轻量级的数据存储方式,适合存储简单的键值对数据,如...
本教程将详细介绍Android中的三种主要数据存储方式:SharedPreferences存储、内部文件存储以及数据库存储。 1. SharedPreferences存储 SharedPreferences是Android提供的一种轻量级的数据存储方式,用于保存应用...
"Android 手机 App 程序中 SQLite 数据存储应用" Android 手机 App 程序中 SQLite 数据存储应用是 Android 手机 App 程序开发中的一个重要组成部分。随着 IT 行业的高速发展,移动通信技术的更新速度日新月异。...
总结,Android数据存储涉及多种技术和策略,根据应用场景选择合适的方法,合理利用内存缓存和文件缓存,可以显著提升应用性能,减少网络开销。在处理非图片数据时,序列化和缓存技术尤其关键,它们帮助我们高效地...
在Android开发中,数据存储是不可或缺的一部分,它用于持久化应用程序的数据,以便在用户退出或设备重启后仍能保留这些信息。Android提供了五种主要的数据存储方式:共享首选项(SharedPreferences)、内部存储...
本教程将深入探讨Android中的几种主要数据存储方式,包括Shared Preferences、SQLite数据库以及文件存储。 首先,我们来讨论**Shared Preferences**。Shared Preferences是一种轻量级的数据存储方式,适合于存储...
本资料包“Android学习之数据存储.zip”提供了一些关于Android数据存储的源码,是学习和参考的理想资源。下面将详细探讨Android中的几种数据存储方式及其应用场景。 1. **Shared Preferences** Shared Preferences...
在Android平台上,数据存储是应用程序持久化数据的关键技术。Android提供了多种存储机制,包括SQLite数据库、SharedPreferences、文件系统以及ContentProvider。本篇文章将主要聚焦于SQLite数据库在Android浏览器中...
通过这个课件和Demo,开发者可以从理论到实践,全面掌握Android数据存储的各种方法,提升自己的开发能力。对于初学者,这是一个很好的起点;对于经验丰富的开发者,也是复习和深入理解的宝贵资源。
本资源“Android学习之数据存储”提供了一些关于Android数据存储的源码,这对于理解Android数据存储机制及其实践应用非常有帮助。 在Android中,有多种方式来实现数据存储,包括: 1. **SharedPreferences**:这是...
在Android系统中,数据存储是应用开发者必须掌握的重要技能之一...总结来说,Android数据存储涉及到多种策略,每种都有其适用场景和优缺点。理解并熟练运用这些存储方法,能够帮助开发者构建更高效、更安全的应用程序。
在android平台上应用数据存储的方法全集。
"老罗android视频开发源码和ppt--android存储数据和文件.rar"这个压缩包提供的是关于Android数据存储和文件操作的教学资源,包括视频课程和PPT讲义,由知名的Android讲师罗升阳(老罗)编撰。 首先,我们来看一下...
在Android应用开发中,数据的储存与读取是不可或缺的一部分,它涉及到用户数据持久化、应用状态保存等关键功能。本教程将详细讲解Android中...实践是学习的最佳途径,分析并运行源码将加深对Android数据存储的理解。
在Android系统中,为了满足应用程序在不同场景下的数据存储需求,提供了多种数据存储方式。本文将详细介绍这五种主要的数据存储方法,旨在帮助开发者更好地理解并选择合适的数据存储方案。 ### 1. Shared ...