为什么要进行数据持久化?
保存在内存中的数据是处于瞬时状态的,而保存在存储设备中的数据是处于持久状态的。当电脑手机或电脑关机的情况下内存中的瞬时数据就会丢失,比如用户刚填好的信息,刷新一下就没了!!!这是一件很影响用户体验的事情。这就需要用到数据持久化技术了。
数据持久化就是指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑关机的情况下,这些数据仍不会丢失。
Android系统中提供三种数据持久化技术:文件存储、SharedPreferences存储以及数据库存储。下面我将介绍SharedPreferences存储。
SharedPreferences存储
SharedPreferences存储使用键值对的方式。当保存一条数据时,需要给这条数据提供一个对应的键,读取数据时通过这个键把对应的数值取出来。
一、将数据存储到SharedPreferences中
首先需要获取到SharedPreferences对象
-
Context类中的getSharedPreferences()方法
有两个参数,一个参数用于指定SharedPreferences文件的名字,若指定文件不存在则创建一个;第二个参数用于指定操作模式,目前只剩默认模式MODE_PRIVATE,可直接传入0。
-
Activity类中的getPreferences()方法
和getSharedPreferences()方法类似,但使用这个方法时会自动将当前活动的类名作为SharedPreferences的文件名,因此它只接收一个操作模式参数。
-
PreferenceManager类中的getDefaultSharedPreferences()方法
这是一个静态方法,它接收一个Context参数,并自动使用当前应用程序的包名作为前缀来命名SharedPreferences文件。
获取到对象后,向SharedPreferences文件中存储数据
-
调用SharedPreferences对象的edit()方法来获取一个SharedPreferences.Editor对象
SharedPreferences.Editor editor = getSharedPreferences("userData",MODE_PRIVATE).edit();
-
向SharedPreferences.Editor对象中添加数据,用putBoolean()方法添加布尔型数据,用putString()方法添加字符串,以此类推
editor.putString("token_type",oauthResponse.getToken_type()); editor.putBoolean("isStore",true);
-
调用apply()方法将添加到数据提交,从而完成数据存储
editor.apply();
从SharedPreferences中读取数据
与存储的put方法对应的有一系列的get方法,get方法接收两个参数,一个参数是键,传入存储数据时使用的键就可以得到相应的值;一个是默认值,表示当传入的键找不到对应的值时会以什么样的默认值返回。
pref=this.getSharedPreferences("userData", Activity.MODE_PRIVATE);
isStore = pref.getBoolean("isStore",false);
通过获取对象、存储数据、读取数据的操作,我们可以实现账号登录,缓存用户数据的功能。通过isStore判断用户是否登录过,有记录则直接登录,没有记录则展示登录界面,供用户填写登录信息,登录后将用户数据存下,以便下次直接登录。
在其他需要缓存少量信息的地方,也可以这么使用!这个方法真是太简单好用了!不过,数据量大的时候,可就得借助文件存储或数据库存储了。目前还未涉及,等学到了再更新~