“业精于勤,荒于嬉;行成于思,毁于随”——(唐)韩愈《进学解》。不知不觉中一晃已经一个月没写博客了,回顾一下这一个月项目上做的大部分都是一些琐碎的东西,适合拿来写的东西不多,再加上其他的这段时间其他的事情也不少,所以就耽搁了。以后还是要尽量抽出一点时间来多学一点新技术新知识,这样才能进步的更快,毕竟磨刀不误砍柴工。
一、背景
好了,言归正传。这两天做APP遇到了一个问题,需要对少量的数据进行存储,比如存储路径或者使用者使用的历史信息,像支付宝买火车票时选择城市的历史信息等。面对这个问题我的第一反应是把信息存成TXT文本文档保存在手机中,其实这也是一种可行的办法,但是数据的写入和读取都非常麻烦,而且这个文档自己写路径必须要藏好了,万一被用户给删掉了,那就麻烦了。
这个时候我忽然想起去年的时候,用SharePreferences技术做过数据存储,现在这个情况正视它的用武之地,由此可见多学一点总是没坏处的,说不定什么时候就用上了。
二、SharePreferences简介
SharePreferences接口位于android.content包中,用于使用键值(key-value)对的方式来存储数据。该类主要用于boolean、float、int、long、String等基本类型。在应用程序结束后,数据仍旧会保存。数据是以XML文件格式保存在Android手机系统下的“/data/data/<应用程序包名>/shared_prefs”目录中,该文件被称为SharePreference(共享的首选项)文件。
三、开始使用
3.1 获得SharePreferences对象
通常情况下,可以通过一下两种方式获得SharePreferences对象
3.1.1 使用getSharePreferences()方法获取
如果需要多个使用名称来区分的SharePreferences文件,则可以使用getSharePreferences()方法获取,基本语法如下:
getSharePreferences(String name, int mode)
参数说明:name:共享文件的名称(不包括扩展名);mode:用于指定访问权限,它的参数值可以是MODE_PRIVITE(只能被本应用程序读和写,其中写入的内容会覆盖原文件的内容)、MODE_MULTI_PROCESS(可以跨进程、跨应用程序读取)。
3.1.2 使用getPreferences()方法获取
如果只需要一个SharePreferences文件,则可以使用getPreferences()方法获取,基本语法如下:
getPreferences(int mode)
参数mode的取值与getSharePreferences()方法相同。
3.2 向SharePreferences文件存储数据
存储数据共分为三步。(1)、获得Editor对象;(2)、添加数据;(3)、提交数据。具体实例如下:
SharedPreferences.Editor editor = context.getSharedPreferences("dataStorage", MODE_PRIVATE).edit();
editor.putInt("age",20);
editor.putString("path", path);
editor.commit();
3.3 读取SharePreferences文件中存储的数据
从SharePreferences文件中读取数据时,主要是用SharePreferences类的get方法。具体实例如下:
SharedPreferences preferences = getSharedPreferences("recentCities", MODE_PRIVATE);
int recent = preferences.getInt("num", 0);
String[] cities = new String[6];
for (int i = 0; i < recent; i++) {
cities[i] = preferences.getString(String.valueOf(i), "");
}
四、后记
Android其他的存储方式主要还有文件的读写存储和数据库的存储。文件的读取不管是txt文档还是图片,都比较简单,也经常接触;数据库的话,就是Android系统集成的轻量级的关系型数据库——SQLite了,等什么时候学会了再来和大家分享吧,希望不会很久!
五、参考
1、《零基础学Android》,明日科技出版社