Android数据存储

一、Android的数据存取技术分类

本地数据存取技术:

1.SharedPreferences存储
2.文件存储
3.SQLite轻量型数据库

远程数据存取技术:

1.ContentProvider
2.网络存储

二、本地数据存取的位置:

在这里插入图片描述

三、SharedPreferences存储:

SharedPreferences是一种轻量级的数据存储方式,可以将键/值对的数据,保存在Android的文件系统中,完全屏蔽了文件系统的操作过程。SharedPreferences支持整型、布尔型、浮点型、长整形、字符串数据类型,特别适合用于保存少量数据,更新不频繁且安全性要求不高的场合,如:软件配置参数。

1.操作前,须获取SharedPreferences对象

1.1. Context.getSharedPreferences(String name, int mode):
  • name为文件名称。
  • mode为操作模式,默认的模式为0或MODE_PRIVATE,还可以使用MODE_WORLD_READABLE 和MODE_WORLD_WRITEABLE。
1.2. Activity.getPreferences(int mode):只能在当前activity使用,一般不用:
  • 使用当前不带包名的类名作为文件的名称。
  • mode为操作模式,默认的模式为0或MODE_PRIVATE,还可以使用MODE_WORLD_READABLE 和MODE_WORLD_WRITEABLE。
1.3. MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE两种模式已经在4.2版本废除

存储数据步骤

1.用SharedPreferences对象的方法edit()获得一个Editor对象

2.通过putString以键值<String key, String value>方式把字符串值写入Editor对象中,其他类型数据调用相应的put()方法。

3.最后利用commit()或apply()方法提交数据

在这里插入图片描述

读取数据

从已经保存的SharedPreferences中读取数据:
1.调用getSharedPreferences()函数
2.通过get()函数获取保存在SharedPreferences中的键值对

四、文件存取

文件存储是Android中最基本的一种存储方式,和Java中实现I/O的方式,由Context类提供openFileInput()和openFileOutput()方法打开。文件存储主要分两种存储,一种是内部存储,一种是外部存储。
在这里插入图片描述

内部存储的写入文件步骤

1.获取文件输出流对象 FileOutputStream

2.使用FileOutputStream类的openFileOutput(String name, int mode)方法

3.调用FileOutputStream对象的write()方法写入文件

4.调用flush()方法,因为write()方法是写入缓冲区的,调用flush()方法将缓冲中的数据写入到文件,清空缓存

5.close()方法用于关闭FileOutputStream

内部存储的读取文件步骤

1.获取文件输入流对象 FileInputStream

2.使用FileInputStream类的openFileInput()方法来实现

3.调用FileInputStream对象的read()方法

4.调用close()关闭文件输入流对象

外部存储

外部存储的文件时全局都是可以读的,在程序中,使用Environment类的getExternalStorageDirectory方法,来读取外部文件。
在这里插入图片描述

五、数据库存取

SQLite是一款轻量级的关系型数据库,它的运算很快,占用空间小,SQLite不仅有SQL语法支持,独立,还有数据库的ACID事务,SQLite数据库为一种嵌入式数据库。

SQLiteOpenHelper类,它是SQLiteDatabase的帮助类,用于管理数据库的创建和升级,SQLiteOpenHelper类为抽象类,有两个要重写的方法:onCreate()和onUpgrade(),用于去实现创建和升级数据库。

在SQLiteOpenHelper类中还需要一个构造方法,这个方法接收四个参数,分别为Context context,String name, CursorFactory factory,int version这四个。第一个是参数context,第二个是数据库名,第三个是自定义Cursor,一般为null,第四个为当前的数据库版本号。

在SQLiteOpenHelper类中有两个重要的实例方法,为getReadableDatabase()和getWritableDatabase()这两个方法。调用这其中的方法就能够创建数据库了。如果存在数据库就打开,没有就创建。

六、ContentProvider

内容提供程序有助于应用管理其自身和其他应用所存储数据的访问,并提供与其他应用共享数据的方法。它们会封装数据,并提供用于定义数据安全性的机制。内容提供程序是一种标准接口,可将一个进程中的数据与另一个进程中运行的代码进行连。实现内容提供程序大有好处。最重要的是,通过配置内容提供程序,您可以使其他应用安全地访问和修改您的应用数据
在这里插入图片描述

创建Content Provider:

1.创建一个继承了ContentProvider父类的类

2.定义一个名为CONTENT_URI,并且是public static final的Uri类型的类变量,你必须为其指定一个唯一的字符串值,最好的方案是以类的全名称,

如: public static final Uri CONTENT_URI = Uri.parse( “content://com.google.android.MyContentProvider”);

3.创建你的数据存储系统。大多数Content Provider使用Android文件系统或SQLite数据库来保持数据,但是你也可以以任何你想要的方式来存储。

4.定义你要返回给客户端的数据列名。如果你正在使用Android数据库,则数据列的使用方式就和你以往所熟悉的其他数据库一样。但是,你必须为其定义一个叫_id的列,它用来表示每条记录的唯一性。

5.如果你要存储字节型数据,比如位图文件等,那保存该数据的数据列其实是一个表示实际保存文件的URI字符串,客户端通过它来读取对应的文件数据,处理这种 数据类型的Content Provider需要实现一个名为_data的字段,_data字段列出了该文件在Android文件系统上的精确路径。这个字段不仅是供客户端使用,而 且也可以供ContentResolver使用。客户端可以调用ContentResolver.openOutputStream()方法来处理该 URI指向的文件资源,如果是ContentResolver本身的话,由于其持有的权限比客户端要高,所以它能直接访问该数据文件。

6.声明public static String型的变量,用于指定要从游标处返回的数据列。

7.查询返回一个Cursor类型的对象。所有执行写操作的方法如insert(), update() 以及delete()都将被监听。我们可以通过使用ContentResover().notifyChange()方法来通知监听器关于数据更新的信息。

8.在AndroidMenifest.xml中使用标签来设置Content Provider。

9.如果你要处理的数据类型是一种比较新的类型,你就必须先定义一个新的MIME类型,以供ContentProvider.geType(url)来返回。

七、网络存储

可以调用WebService返回的数据或是解析HTTP协议实现网络数据交互。
具体需要熟悉java.net.*,Android.net.*这两个包的内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值