android SharedPreferences 使用

        android提供了五种存储数据的方式,分别是:SharedPreferences、文件存储、Sqlite数据库、ContentProvider以及网络存储数据,在本文中,我们将介一下SharedPreferences的使用。

        SharedPreferences是用来存储程序运行时需要的一些数据,比如配置信息,以xml的格式存放在/data/data/<package name>/shared_prefs目录下,在本运用间可以共享。

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.os.Bundle;
import android.util.Log;

public class SharedPreferencesDemo extends Activity
{
	private String spFileName = "database";

	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		/**
		 * ContextWrapper中提供了返回SharedPreferences对象的公共方法,
		 * 即是在运用Application中都可以共享SharedPreferences中的数据 
		 * arg0:文件名
		 * arg1:文件创建方式,默认为0或者Content.MODE_PRIVATE
		 */
		SharedPreferences sp = 
				getSharedPreferences(spFileName,Context.MODE_PRIVATE);
		/**
		 * Editor是SharedPreferences中的一个嵌套接口
		 * 任何关于SharedPreferences数据更新的操作都必须通过Editor完成
		 */
		Editor editor = sp.edit();
		// Editor可以保存int、float、boolean、long和String几大类型数据
		editor.putString("host", "127.0.0.1");
		editor.putInt("port", 3306);
		editor.putString("usename", "root");
		editor.putString("password", "root");
		editor.putString("charset", "utf-8");
		editor.putString("key", "------------");
		// 对数据进行更新以后,必须调用commit()方法
		editor.commit();
	}

}
        

        运行程序后,在File Explore视图里的/data/data/<package name>/shared_prefs目录下,可以发现有一个database.xml的文件,如下图:

    

        打开文件,可以看到:

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>

<map>

    <int name="port" value="3306" />

    <string name="charset">utf-8</string>

    <string name="host">127.0.0.1</string>

    <string name="usename">root</string>

    <string name="password">root</string>

</map>

        这下明白了吧,SharedPreferences是以key---value的形式包数据保存在xml文件了,值得注意的是,SharedPreferences是不能保存重复数据的,在使用Editor.putXXX()方式写入数据是,它会一句key只判断该条数据是否已存在,不存在则追加,存在则更新。SharedPreferences也提供了监听数据是否被更新的方法:

sp.registerOnSharedPreferenceChangeListener(new OnSharedPreferenceChangeListener()
{
	@Override
	public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,String key)
	{
		Log.e("SharedPreference", key);
	}
});

        SharedPreferences对数据写入的限制也是其轻量级存储方法的一个体现,它获取数据同样简单:

SharedPreferences sp2 = getSharedPreferences(spFileName, Context.MODE_PRIVATE);
boolean flag = sp == sp2;
Log.e("flag", String.valueOf(flag));
String host = sp2.getString("host", "");
Log.e("host", host);
String username = sp2.getString("username", "");
Log.e("username", username);
String password = sp2.getString("password", "");
Log.e("password", password);
int port = sp2.getInt("port", 0);
Log.e("port", String.valueOf(port));


        


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值