您的位置:首页 > 移动开发 > Android开发

android数据操作之SharedPreferences

2015-09-28 15:55 501 查看
SharedPreferences是android平台上的一个轻量级数据存储类,可以说是一种非常简单,基础的一种存储方式。

不过身小作用却不少,比如我们第一次使用一个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>
上述代码实现的就是我在开头说的那个功能,代码的解释应该都挺详细了,有问题再留言吧!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息