安卓学习之路之数据存储方式之SharedPreferences

SharedPreferences:  通过键值对形式保存简单的,私有的数据.

存储的类型是基本数据类型,所以常用来存储应用的配置信息,用户设置的参数等数据不大的数据;

数据存储的方式是以"键值对的"形式

SharedPreferences存储的数据的路径是/data/data/应用程序的包名/shared_prefs的目录下

在这个目录下,SharedPreferences的数据是以xml文件格式存储的,所以SharedPreferences的读写就是对xml文件的解析和写入的过程.

读数据


想要用SharedPreferences读数据,首先要获得一个SharedPreferences的对象,有两种方法:

第一,直接在用上下文的对象调用getSharedPreferences();如果一个Activity需要使用多个SharedPreferences的文件,

使用这个方法,这个方法的第一个参数是SharedPreferences的文件的文件名即XML的文件名;

第二, 也是用上下文的对象调用getPreferences();如果一个Activity只是需要使用一个SharedPreferences的文件的话,可以使用这个方法,这个方法没有参数,调用这个方法后,可以在/data/data/应用程序的包名/shared_prefs的目录下找到一个和当前的Activity的类名一样的XML文件的文件名;

   


写数据:

写数据可以分四步
1,用getSharedPreferences();或者getPreferences()方法得到一个SharedPreferences对象.

2. 调用SharedPreferences对象的edit()方法,获得一个SharedPreferences.Editor的内部类的对象

3.调用Editor对象的putInt(),putString();等方法,第一个参数为key(键),第二个value(值)

4,使用Editor对象的commit()方法,提交修改,否则,无法写入数据

下面是一个简单的案列

简单的说明下getSharedPreferences()的两个参数

 参数1:保存数据文件的名称

 参数2:数据的标记

 MODE_PRIVATE:数据只能被本应用程序读和写 这是是我们经常使用的
MODE_APPEND:新内容能追加到原内容之后
MODE_WORLD_READABLE:能被其他程序读  但不能写
MODE_WORLD_WRITEABLE:能被其他程序读和写



public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}

	public void OnclickBtn(View v){
		switch (v.getId()) {
		case R.id.btn_save://保存数据
			/**
			 * 参数1:保存数据文件的名称
			 * 
			 * 参数2:数据的标记
			 * 
			 * MODE_PRIVATE:数据只能被本应用程序读和写
			 * MODE_APPEND:新内容能追加到原内容之后
			 * MODE_WORLD_READABLE:能被其他程序读  但不能写
			 * MODE_WORLD_WRITEABLE:能被其他程序读和写
			 * 
			 * 
			 * <?xml version='1.0' encoding='utf-8' standalone='yes' ?>
				<map>
					<float name="floatType" value="1.0" />
					<int name="intType" value="34" />
					<string name="stringType">你好</string>
					<boolean name="booleanType" value="true" />
					<long name="longType" value="123" />
				</map>

			 * 
			 * 保存的路径:data/data/程序包名/shard_prefs/参数1.xml
			 * 
			 */
//			SharedPreferences preferences = getSharedPreferences("info", Context.MODE_PRIVATE);
			SharedPreferences preferences = getPreferences(Context.MODE_PRIVATE);
			
			//获取编辑者对象
			Editor editor = preferences.edit();
			editor.putBoolean("booleanType", true);
			editor.putFloat("floatType", 1.0f);
			editor.putInt("intType", 34);
			editor.putLong("longType", 123l);
			editor.putString("stringType", "你好");
			//要提交数据
			editor.commit();
			
			
			break;
		case R.id.btn_get://获取数据
			
			//SharedPreferences preferences2 = getSharedPreferences("info", Context.MODE_PRIVATE);
			SharedPreferences preferences2 = getPreferences(Context.MODE_PRIVATE);
			boolean b1 = preferences2.getBoolean("booleanType", false);
		    int int1 =preferences2.getInt("intType", -1);
		    String str = preferences2.getString("stringType", "defauls");
		    String str1 = preferences2.getString("stringType1", "defauls");
		    
		    Log.i("==SharedPreferences==", b1+"    "+int1+"   "+str+"   "+str1);
			
			break;

		default:
			break;
		}
	}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值