Android存储之SharePreferences
来源:互联网 发布:有限元分析软件哪个好 编辑:程序博客网 时间:2024/05/22 01:32
有的时候,应用程序有少量的数据需要保存,而且这些数据的格式比较简单,都是普通的字符串、标量类型的值等,比如应用程序的各种配置信息(如是否打开音效、是否使用振动效果等)、小游戏的玩家积分(如扫雷英雄榜的)等。对于这种数据,Android使用SharePreference进行保存。
一、SharedPreferences与Editor简介
1、SharedPreferences与Editor简介
SharedPreference**保存的数据主要是类似于配置信息格式的数据,因此它保存的数据主要是简单类型的key_value对。**
SharePreferences接口主要负责读取应用程序的Perferences数据,它提供了如下常用方法来访问SharedPreferences中的key-value对。
- boolean contains(String key):判断SharedPreferences是否包含特定key的数据。
- abstract MapString , ? > getAll():获取SharePreference数据里全部key-value对。
- boolean getXxx(String key,xxx defValue):获取SharedPreferences数据里指定key对应的value。如果该key不存在,则返回默认只defValue。其中xxx可以是boolean、float、int、long、String等各种基本类型的值。
SharedPreference接口本身并没有提供写入数据的能力,而是通过SharedPreferences的内部接口,SharedPreferences调用edit()方法获取对应的Editor对象。Editor提供了如下方法来向SharedPreferences写入数据。
- SharedPreference.Editor clear():清空SharedPreferences里的所有数据
- SharedPreference.Editor putXxx(String key,xxx value):向SharedPreferences存入指定key对应的数据。其中xxx可以是boolean,float、int、long、String等各种基本类型的值。
- SharedPreferences.Editor remove(String key):删除SharedPreference里指定key对应的数据项。
- boolean commit():当Editor编辑完成之后,调用概方法提交修改。
SharedPreferences本身是一个接口,程序无法直接创建Context提供的getSharedPreferences(String name,int mode)方法来获取SharePreferences实例,改方法的第二个参数支持如下几个值。
- Context.MODE_PRIVATE:指定SharePreference数据只能被本应用程序读写。
- Context_WORLD_READABLE:指定改SharedPreferences数据能被其他应用程序读,但不能写。
- Context_WORLD_WRITEABLE:指定改SharedPreferences数据能被其他应用程序读写。
注意:从Android 4.2开始,Android不再推荐使用MODE_WORLD_READABLE、MODE_WORLD_WRITEABLE两种模式,因为这两种模式允许其他应用程序来读或写本应用创建的数据,因此容易导致安全漏洞。
2、SharedPreferences的存储位置和格式
下面程序示范了如何向SharedPreferences中写入、读取数据。该程序的界面很简单,它只是提供了两个按钮,其中一个用于写入数据,一个用于读取数据,故此不再给出界面布局文件。
程序代码如下
public class MainActivity extends Activity{ SharedPreferences preferences; Shared Preferences.Editor editor; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //只能获取被本应用程序读写的SharedPreferences对象 preferences = getSharedPrefences("user_info",MODE_PRIVATE); editor = preference.edit(); Button read = (Button)findViewById(R.id.read); Button write = (Button)findViewById(R.id.write); read.setOnClickListener(new OnClickListener(){ @Override public void onClick(View view){ //读取字符串数据 String time = preferences.getString("time",null); //读取int类型的数据 int randNum = preference.getInt("random",0); String result = time == null ? "您暂时还未写入数据":"写入时间为:" + time + "\n上次生成的随机数为:" + randNum; //使用Toast提示信息 Toast.makeText(MainActivity.this,result,Toast.LENGTH_SHORT).show(); } }); write.setOnClickListener(new OnClickListener(){ @Override public void onClick(View view){ //SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日" + "hh:mm:ss"); //存入当前时间 editor.putString("time",sdf.format(new Date())); //存入一个随机数 editor.putString("random",(int)(Math.random() * 100)); //提交所有存入的数据 editor.commit(); } }); }}
运行上面的程序,单击程序中”写入数据”按钮,程序将完成SharedPreferences写入。SharedPreference总是保存在/data/data/package name/prefs目录下,SharedPreference数据总是以XML格式保存。
查看该XML文件,可以看到如下文件内容:
<?xml version='1.0' encoding='utf-8' standalone='yes' ?><map> <string name="time">2016年10月6日 13:06:51</string> <int name="random" value="21"/></map>
- Android存储之SharePreferences
- Android数据存储之 SharePreferences
- Android数据存储之SharePreferences
- Android数据存储之SharePreferences参数应用
- Android学习之SharePreferences轻量级数据存储
- Android数据的四种存储方式 之 SharePreferences
- Android数据存储之SharePreferences的使用总结
- Android初学者之SharePreferences
- Android之SharePreferences
- Android的SharePreferences存储方式
- android数据存储篇--SharePreferences
- Android 中的数据存储----SharePreferences 存储
- Android存储方式—SharePreferences存储
- Android:储存方式之SharePreferences
- Android:储存方式之SharePreferences
- Android之SharePreferences的使用
- Android复习之旅--SharePreferences
- SharePreferences存储
- Handler详解系列(四)——利用Handler在主线程与子线程之间互发消息,handler详解
- 2016-10-15学习笔记_tyounami
- 自定义tabBar条
- 虚基类与多重继承
- MySQL绿色版5.7以上安装教程,以及安装过程中会出现的错误解决方案
- Android存储之SharePreferences
- 数据结构-----查找
- Maven启动脚本分析
- 解决org.springframework.beans.factory.BeanCreationException 异常的一种情况
- RxAndroid之搭建环境
- Unity3d 发布EXE安装程序
- macOS Sierra 更换SSD开启TRIM支持
- Hive----------Cannot find hadoop installation: $HADOOP_HOME m...
- 成员变量、局部变量、静态变量