android数据操作之SharedPreferences

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_READABLEContext.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 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>
上述代码实现的就是我在开头说的那个功能,代码的解释应该都挺详细了,有问题再留言吧!再见







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值