Shared Preferences 经常用来保存应用程序的一些属性设置,在android平台常用于存储较简单的参数设置。
先说说文件创建的几个模式
文件创建模式:Activity.MODE_APPEND
如果该文件已经存在,然后将数据写入,而不是抹掉它现有文件的末尾。
文件创建模式:MODE_PRIVATE
默认模式,在那里创建的文件只能由应用程序调用,即为私有的
文件创建模式:Activity.MODE_WORLD_READABLE
允许所有其他应用程序有读取和创建文件的权限。
文件创建模式:Activity.MODE_WORLD_WRITEABLE
允许所有其他应用程序具有写入、访问和创建的文件权限。(注意!写入的时候会覆盖原来的所有内容)
详细用法如下:
保存数据:
SharedPreferences saveState = getPreferences(Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = saveState.edit();
editor.putString("msg", "this is first message");
editor.commit();
获取数据:
SharedPreferences setting = getPreferences(Activity.MODE_PRIVATE);
String message = setting.getString("msg", null);//第一个参数为键值对的键,第二个参数为默认值,即如果查询的键值对不存在,则会返回第二个参数
如果你的程序通过使用preferences来存取数据,那么这些数据究竟放到哪里了呢?
其实,系统每安装一个应用程序时,在/data/data 目录下都会产生一个文件夹,如果应用程序中使用了preferences,那么便会在该文件夹下产生一个shared_prefs文件夹,其中就是我们保存的数据。(文件名好像是用调用shared Prefenences的activity名字命名的,后缀名为.xml)
注意!!使用Shared Preferences保存的数据只能在保存的页面获取,在其他页面不能获取。
证明:首先有两个activity分别为界面一和界面二,界面二是从界面一跳转过去的。
1、首先在界面一获取msg的值为null,界面二获取msg的值为null。
2、在界面二保存一对键值对putString(“msg”,"this is second msg");
3、再次,在界面二获取msg的值为“this is second msg”,返回界面一,在界面一获取msg的值为null。
4、然后在界面一保存一对键值对putString(“msg”,"this is first msg");
5、再次,在界面一获取的msg的值为"this is first msg",跳转到界面二,在界面二获取msg的值为"this is second msg"
由此得知,不同页面保存数据的地方是不一样的,所以要谨慎使用。