Android初学之十四:数据存储全方案,详解持久化技术

持久化技术指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑关机的情况下,这些数据仍然不会消失。保存在内存中的数据是瞬时状态的,而保存在存储设备的数据是处于持久状态的,持久化技术则提供了一种机制可以让数据在瞬时状态和持久状态之间进行转换。
Android系统中的数据持久化功能,即文件存储、SharedPreferences以及数据库存储,除了这三种方式之外,你还可以将数据保存在手机的SD卡中,不过使用文件、SharedPrefence或数据库来保存数据会相对更简单一些,而且比起将数据保存在SD卡中更加地安全。

一、文件存储

文件存储是Android中最基本的一种数据存储方式,它不对存储的内容进行任何的格式化处理,所有数据都是原封不动地保存到文件当中的,因而它比较适合用于存储一些简单的文本数据或二进制数据,这样可以方便之后将数据从文件中重写解析出来。

Context类中提供了一个openFileOutput()方法,可以用于将数据存储奥指定的文件中,这个方法接收两个参数,第一个参数是文件名,在文件创建的时候使用的就是这个名称,注意这里指定的文件名不可以包含路径,因为所有的文件都是默认存储到/data/data//files目录下的。第二个参数是文件的操作模式,主要有两种模式可以选,MODE_PRIVATE和MODE_APPEND,其中MODE_PRIVATE是默认的操作模式,表示当指定同样文件名的时候,所写入的内容将会覆盖原文件中的内容,而MODE_APPEND则表示如果该文件已存在,就往文件里面添加内容,不存在就创建文件。

1、示例:从EditText读取文本写入到文件中
在这里插入图片描述
在这里插入图片描述
Android3.1还是多少以上的版本,想要打开android device monitor需要到我们SDK/tools下的monitor.bat进
在这里插入图片描述
然后找到data/data/包名/files/目录,可以看到一个data文件
在这里插入图片描述
点击右上角导出符号下载到电脑进行查看

2、示例:从文件中读取数据
ContexT类中提供了一个openFileInput()方法,用于从文件中读出数据,只接受一个参数:要读取的文件名,然后系统会自动的到data/data//files/目录下去加载这个文件,并返回一个FileInputStream对象,得到这个对象之后再通过java流的方式就可以将数据读取出来了。
在这里插入图片描述

二、SharedPreferences存储

不同与文件的存储方式,SharedPreferences是使用键值对的方式来存储数据的,也就是说,当保存一条数据的时候,需要给这条数据提供一个对应的键,这样在读取数据的时候就可以通过这个键把相应的值取出来,而且SharedPreferences还支持多种不同的数据类型存储,如果存储的数据类型是整型,那么读取出来的数据也是整型,如果存储的数据是一个字符串,那么读取出来的数据仍然是字符串。

1、示例:将数据存储到SharedPreferences中
要想使用SharedPreferences来存储数据,首先需要先获取到SharedPreferences对象。Android中提供了3种方法用于得到SharedPreferences对象。

A、Context类中的getSharedPreferences()方法,接收两个参数,第一个参数:指定SharedPreferences文件的名称,如果指定的文件不存在则会创建一个,SharedPreferences文件都是存放在/data/data//shared_prefs/目录下的;第二个参数用于指定操作模式,目前只有MODE_PRIVATE这一种模式可以选,它是默认的操作模式,和直接传入0的效果是相同的,表示只有当前的应用程序才可以对这个SharedPreferences文件进行读写,其它几种操作模式均已被废弃。
B、Activity类中的getPreferences()方法
只接受一个操作模式参数,使用这个方法会自动将当前活动的类名作为SharedPreferences的文件名。
C、PreferenceManager类中的getDefaultSharedPreferences()方法
这是一个静态的方法,接收一个Context参数,自动使用当前应用程序的包名作为前缀来命名SharedPreferences文件,得到了SharedPreferences对象之后,就可以开始向SharedPreferences文件中存储数据了,主要分为3步实现:
(1)、调用SharedPreferences对象的edit()方法来获取一个SharedPreferences.Editor对象
(2)、向SharedPreferences.Editor对象中添加数据,比如添加一个布尔型数据就使用putBoolean()方法,添加一个字符串则使用putString()方法,以此类推;
(3)、调用apply()方法将添加的数据提交,从而完成数据存储操作。

在这里插入图片描述
在这里插入图片描述
依旧是在/data/data//shared_preds/目录下导出查看,
SharedPreferences文件是用XML格式来对数据进行管理的。

2、示例:SharedPreferences中读出数据(看红色部分)
在这里插入图片描述

三、实现记住密码功能

分为两个过程:存密码和取密码(记住密码等同于记住账号和密码)
1、编写一个登录界面,添加控件CheckBox复选框,用户可以通过点击的方式进行选中和取消
在这里插入图片描述
2、编写代码
在这里插入图片描述
根据郭霖大神的《第一行代码》学习,敬礼!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值