SharedPreferences

SharedPreferences(偏好设定;轻量级的存储)

SharedPreferences是Android平台上一个轻量级的存储类,用来保存应用的一些常用配置,比如Activity状态,Activity暂停时,将此activity的状态保存到SharedPereferences中;当Activity重载,系统回调方法onSaveInstanceState时,再从SharedPreferences中将值取出。
SharedPreferences提供了java常规的Long、Int、String等类型数据的保存接口。 [1] SharedPreferences类似过去Windows系统上的ini配置文件,但是它分为多种权限,可以全局共享访问。
提示最终是以xml方式来保存,整体效率来看不是特别的高,对于常规的轻量级而言比SQLite要好不少,如果真的存储量不大可以考虑自己定义文件格式。xml处理时Dalvik会通过自带底层的本地XML Parser解析,比如XMLpull方式,这样对于内存资源占用比较好。


操作模式
SharedPreferences数据的四种操作模式

Context.MODE_PRIVATE
Context.MODE_APPEND
Context.MODE_WORLD_READABLE
Context.MODE_WORLD_WRITEABLE

Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容
Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件.
Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件.
MODE_WORLD_READABLE:表示当前文件可以被其他应用读取.
MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入
特别注意:出于安全性的考虑,MODE_WORLD_READABLE 和 MODE_WORLD_WRITEABLE 在Android 4.2版本中已经被弃用

在Android系统中,SharedPreferences中的信息以XML文件的形式保存在 /data/data/你的软件程序的包名/shared_prefs目录下。

具体代码:
这个是Activity在onPause()()状态保存数据和在onResume()恢复数据的案例

package com.example.sharedpreferences;

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.text.TextUtils;
import android.widget.EditText;

public class MainActivity extends Activity {

	private SharedPreferences sp;
	private EditText editText1;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		editText1=(EditText) findViewById(R.id.editText1);
		//获取当前程序的SharedPreferences对象
		//参数(你要保存的文件名,你的文件访问权限)
		sp=getSharedPreferences("info",Context.MODE_PRIVATE);
		SharedPreferences.Editor editor=sp.edit();
		//通过键名删除某个数据
		editor.remove("info");
	}
	//我们要在Activity的状态快要打开的时候还原数据
	@Override
	protected void onResume() {
		// TODO Auto-generated method stub
		super.onResume();
		editText1.setText(sp.getString("info",""));
	}
	
	//我们要在Activity的状态快要销毁的方法里保存数据
	@Override
	protected void onPause() {
		// TODO Auto-generated method stub
		super.onPause();
		String info=editText1.getText().toString();
		//通过一个工具类TextUtils.isEmpty()判断info是否为空
		if(TextUtils.isEmpty(info)) {
			return;
		}
		//拿到一个Editor对象
		SharedPreferences.Editor editor=sp.edit();
		editor.putString("info", info);
		//注意:最后一定要提交
		editor.commit();
	}

}

精简代码:

//存
Editor sharedata = getSharedPreferences("data", 0).edit();
sharedata.putString("item","hello worid");
sharedata.commit();
//取
SharedPreferences sharedata = getSharedPreferences("data", 0);
String data = shareda
ta.getString("item", null);
Log.v("cola","data="+data);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王家视频教程图书馆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值