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。
取
<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>
看过了存的原理取就不用再多做介绍了吧。
实际应用
<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 onCreate(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>
上述代码实现的就是我在开头说的那个功能,代码的解释应该都挺详细了,有问题再留言吧!![再见](http://static.blog.csdn.net/xheditor/xheditor_emot/default/bye.gif)