Android 数据存储五种方式使用与总结
1. SharedPreference类基于XML文件存储的“key-value”键值对数据。通常用来存储程序的一些配置信息。对于内存资源占用比较好。
(1)通过以下两种方法获取SharedPreferences对象(通过Context):
①getSharedPreferences (String name, int mode)
当我们有多个SharedPreferences的时候,根据第一个参数name获得相应的SharedPreferences对象。
②getPreferences (int mode)
如果你的Activity中只需要一个SharedPreferences的时候使用。
这里的mode有四个选项:
A.Context.MODE_PRIVATE
该SharedPreferences数据只能被本应用程序读、写。
B.Context.MODE_WORLD_READABLE
该SharedPreferences数据能被其他应用程序读,但不能写。
C.Context.MODE_WORLD_WRITEABLE
该SharedPreferences数据能被其他应用程序读和写。
D.Context.MODE_MULTI_PROCESS
(2)向Shared Preferences中写入值
首先要通过 SharedPreferences.Editor获取到Editor对象;
然后通过Editor的putBoolean() 或 putString()等方法存入值;
最后调用Editor的commit()方法提交;
同时Edit还有两个常用的方法:
editor.remove(String key) :下一次commit的时候会移除key对应的键值对
editor.clear():移除所有键值对
(3)Shared Preferences的优缺点:很轻量级的应用,方便,简洁。但存储数据类型比较单一(只有基本数据类型),无法进行条件查询。
1. 文件数据储存
(1)创建和写入一个内部存储的私有文件:
①调用Context的openFileOutput()函数,填入文件名和操作模式,它会返回一个FileOutputStream对象。
②通过FileOutputStream对象的write()函数写入数据。
③FileOutputStream对象的close ()函数关闭流。
(2)读取一个内部存储的私有文件:
① 调用openFileInput( ),参数中填入文件名,会返回一个FileInputStream对象。
② 使用流对象的 read()方法读取字节
③ 调用流的close()方法关闭流
其他一些经常用到的方法:
getFilesDir():得到内存储文件的绝对路径
getDir():在内存储空间中创建或打开一个已经存在的目录
deleteFile():删除保存在内部存储的文件。
fileList():返回当前由应用程序保存的文件的数组
1. SQLite储存特性:
(1)ACID事务:指数据库事务正确执行的四个基本要素的缩写。包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。
(2)零配置 – 无需安装和管理配置
(3)储存在单一磁盘文件中的一个完整的数据库
(4)数据库文件可以在不同字节顺序的机器间自由的共享
(5)支持数据库大小至2TB
(6)足够小, 大致3万行C代码, 250K
(7)比一些流行的数据库在大部分普通数据库操作要快
(8)简单, 轻松的API
使用:
(1)创建数据库
继承SQLiteOpenHelper之后就拥有了以下两个方法:
getReadableDatabase() 创建或者打开一个查询数据库
getWritableDatabase() 创建或者打开一个可写数据库
DatabaseHelper database = new DatabaseHelper(context);
SQLiteDatabase db = null;
db = database.getWritableDatabase();
上面这段代码会返回一个 SQLiteDatabase 类的实例,使用这个对象,你就可以查询或者修改数据库。
(2)创建表和索引
(3)增删改查
4.ContentProvider存储数据
以结构化方式存放的数据,以相对安全的方式封装数据(表)并且提供简易的处理机制和统一的访问接口供其他程序调用。ContentProvider它也只是一个中间人,真正操作的数据源可能是数据库,也可以是文件、xml或网络等其他存储方式。
(1)ContentProvider的主要方法
public boolean onCreate()
ContentProvider创建后或打开系统后其它应用第一次访问该ContentProvider时调用。
public Uri insert(Uri uri, ContentValues values)
外部应用向ContentProvider中添加数据。
public int delete(Uri uri, String selection, String[] selectionArgs)
外部应用从ContentProvider删除数据。
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs):
外部应用更新ContentProvider中的数据。
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)
供外部应用从ContentProvider中获取数据。
public String getType(Uri uri)
该方法用于返回当前Url所代表数据的MIME类型。
(2)ContentResolver
5.网络存储。