持久化技术之共享参数(SharedPreference)

当我们需要记住一个数据的时候,即不希望该数据随着程序的重新运行而被重置,我们就可以通过持久化技术来完成

这是我用xmind写的文件,可以作为参考


我习惯用一个类将共享参数的方法封装起来,方便下次直接调用,以下是我的代码

package com.examplesharedpreferencedemo;


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

public class MainActivity extends Activity {
	
	//接口 
	SharedPreferences sp;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		/**
		 * 获取共享参数
		 */
		SharedUtil util = new SharedUtil(this, "data");
		
		/**
		 * 读取共享参数
		 * 可以在BaseActivity中加入静态常量当作键,注释一下,以免忘记所取的键的名字
		 */
		String firString = util.getValue("firstr", true+"");
		boolean first = Boolean.parseBoolean(firString);//用封装类将字符串转为对应的数据类型
		
		/**
		 * 写入共享数据
		 */
		util.putValue("first", false+"");
		
	}
	
}

封装类:

package com.examplesharedpreferencedemo;

import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;

/**
 * 共享参数的类
 * @author 傅炫阳
 *
 */
public class SharedUtil {
	SharedPreferences sp;
	
	public  SharedUtil(Context context,String name) {
		sp =  context.getSharedPreferences(name, Context.MODE_PRIVATE);
	}
	
	/**
	 * 获取共享数据
	 * 将所有数据类型都用String保存
	 */
	public String getValue(String key,String defValue) {
		return sp.getString(key, defValue);
	}
	
	/**
	 * 写入共享数据
	 * @param key
	 * @param value
	 * @return
	 */
	public boolean putValue(String key,String value) {
		Editor editor = sp.edit();
		editor.putString(key, value);
		editor.commit();//可在子线程提交
	//API9之上才行,与commit一样,但是没有返回值,无法判断是否提交成功,且必须在主线程中提交数据
//		editor.apply();
		return editor.commit();
	}
	
}



阅读更多
上一篇用广播(BroadcastReceiver)监听电池的变化
下一篇客户端数据库(SQLite)
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭