android数据操作之SharedPreferences
2015-09-28 15:55
501 查看
SharedPreferences是android平台上的一个轻量级数据存储类,可以说是一种非常简单,基础的一种存储方式。
不过身小作用却不少,比如我们第一次使用一个app时,总会出现一些简单的引导来指引用户使用产品,当用户再次打开时,这种引导就不存在了,这就可以通过SharedPreferences简单的实现。
下面就简单的介绍一下SharedPreferences以及其使用:
其数据存储是持久行的,app的退出关闭都不会清空保存着的值,但当app遭到无情卸载时,其值也不存在了,这种方式也使得上述所说的引导作用得以实现。
在Android系统中,ShredPreferences中的信息以XML文件的形式保存在 /data/data/PACKAGE_NAME/shared_prefs目录下。
Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件.
Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件.
MODE_WORLD_READABLE:表示当前文件可以被其他应用读取.
MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入
具体使用方法下文中会提到。
第一行getSharedPreferences函数的第一个参数为打开名为date的数据存储文件(如果不存在则创建),第二个参数就是上面说的操作模式,0为默认才做模式即MODE_PRIVATE。
edit()使sharedate处于可编辑状态。
第二行很简单,就是添加我们需要加入的数据,即key为item,value为“hello getSharedPreferences”的键值对。
不过身小作用却不少,比如我们第一次使用一个app时,总会出现一些简单的引导来指引用户使用产品,当用户再次打开时,这种引导就不存在了,这就可以通过SharedPreferences简单的实现。
下面就简单的介绍一下SharedPreferences以及其使用:
SharedPreferences存储方式
SharedPreferences是以键值对(key-value)的方式存储的,可以存储int,string,boolean,long,float等一些基本数据类型。其数据存储是持久行的,app的退出关闭都不会清空保存着的值,但当app遭到无情卸载时,其值也不存在了,这种方式也使得上述所说的引导作用得以实现。
在Android系统中,ShredPreferences中的信息以XML文件的形式保存在 /data/data/PACKAGE_NAME/shared_prefs目录下。
SharedPreferences操作模式
Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件.
Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件.
MODE_WORLD_READABLE:表示当前文件可以被其他应用读取.
MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入
具体使用方法下文中会提到。
SharedPreferences使用方法
存
<span style="font-weight: normal;">Editor sharedata = getSharedPreferences("data", 0).edit(); sharedata.putString("item","hello getSharedPreferences"); sharedata.commit();</span>
第一行getSharedPreferences函数的第一个参数为打开名为date的数据存储文件(如果不存在则创建),第二个参数就是上面说的操作模式,0为默认才做模式即MODE_PRIVATE。
edit()使sharedate处于可编辑状态。
第二行很简单,就是添加我们需要加入的数据,即key为item,value为“hello getSharedPreferences”的键值对。
取
<span style="font-size:14px;font-weight: normal;">SharedPreferences sharedata = getSharedPreferences("data", 0); String data = sharedata.getString("item", null); Log.v("cola","data="+data);</span>看过了存的原理取就不用再多做介绍了吧。
实际应用
好了,sharedPreferences介绍完了,但许多刚入手的同学可能还看到有些模糊,接下来就用一个实际的使用例子来更清晰的了解sharedPreferences。<span style="font-size:14px;font-weight: normal;">/** * @author wc * */ public class Loading extends Activity { private final int SPLASH_DISPLAY_LENGHT = 2500; // 延迟2.5秒 public static final String PREFERENCE_NAME = "IfFirst";//SharedPreferences的名字 public static int MODE = Context.MODE_WORLD_READABLE+Context.MODE_WORLD_WRITEABLE;//SharedPreferences的操作模式 @Override public void o a058 nCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.loading); new Handler().postDelayed(new Runnable() { public void run() { loadSharedPreferences(); saveSharedPreferences(); } }, SPLASH_DISPLAY_LENGHT); } /** * 读取num的值,如果num为1,,则跳转到主页面,如果num不为1,则跳转到引导页面,其中的0为num不存在时的默认值 * 第一次启动时num不存在,因此跳转到引导页面 */ private void loadSharedPreferences(){ SharedPreferences sharedPreferences = getSharedPreferences(PREFERENCE_NAME, MODE); int num = sharedPreferences.getInt("num", 0); if(num==1) { Intent mainIntent = new Intent(Loading.this, MainActivity.class); Loading.this.startActivity(mainIntent); Loading.this.finish(); } else { Intent mainIntent = new Intent(Loading.this, GuideActivity.class); Loading.this.startActivity(mainIntent); Loading.this.finish(); } } /** * 第一次启动app后将num的值设为1,使第二次打开app时能跳转到MainActivity */ private void saveSharedPreferences(){ SharedPreferences sharedPreferences = getSharedPreferences(PREFERENCE_NAME, MODE); SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putInt("num",1); editor.commit(); } }</span>上述代码实现的就是我在开头说的那个功能,代码的解释应该都挺详细了,有问题再留言吧!
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories