您的位置:首页 > 移动开发 > Android开发

Android SharedPreferences基本用法

2016-06-17 15:28 344 查看

使用SharedPreferences

SharedPreferences是Android平台上一个轻量级的存储类, 用来保存应用的一些常用配置.

SharedPreferences与Editor简介

主要用于保存配置文件, 保存数据的形式是key-value对.

SharedPreferences接口主要负责读取应用程序的Preferences数据,常用方法:

boolean contains(String key)
是否包含特定key的数据.

abstract Map<String, ?> getAll()
获取SharedPreferences数据里的全部的key-value对.

boolean getInt(String key, int defValue)
获取指定key对应的value. 如果key不存在, 则返回默认值defValue. 其他int可以是boolean, float, long...

SharedPreferences接口没有写入数据的能力, 而是通过调用SharedPreferences的内部接口, SharedPreferences调用edit()方法获得对应的Editor对象. Editor接口提供如下方法.

Editor clear()
清空SharedPreferences数据.

Editor putString(String key, @Nullale String value)
向SharedPreferences存入指定key对应的数据. 其中putString可以是putInt, putFloat...

Editor remove(String key)
删除指定key对应的数据项.

boolean commit()
当Editor编辑完成后, 调用此方法提交.

返回值是Editor, return Returns a reference to the same Editor object, so you can chain put calls together.

获取SharedPref实例的方法有两种:

调用Context对象的
SharedPreferences getSharedPreferences(String name, int mode)


调用Activity对象的
SharedPreferences getPreferences(int mode)


name
表示存储文件的名字, 第二种方法采用反射方式获取类名作为默认名.

mode
参数表示操作模式:

Context.MODE_PRIVATE
默认操作模式, 数据只能被本应用读写.

Context.MODE_WORLD_READABLE
(不推荐)可以被其他应用读取.

Context.MODE_WORLD_WRITEABLE
(不推荐)可以被其他应用写入.

SharedPreferences 的存储位置和格式

SharedPreferences数据总是保存在
/data/data/<package name>/shared_pref/
目录下, 总是以XML格式保存.

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<int name="color" value="-1611696" />
</map>

示例代码

public class MainActivity extends AppCompatActivity {

private static final int RED = 0xffff0000;
private static final int BLUE = 0xff00fff0;

SharedPreferences mPreferences;
SharedPreferences.Editor mEditor;

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final LinearLayout bg = (LinearLayout) findViewById(R.id.background);
Button button = (Button) findViewById(R.id.red_button);
Button blueButton = (Button) findViewById(R.id.blue_button);
//获取只能被本程序读写的SharedPreferences对象
mPreferences = getSharedPreferences("test", Context.MODE_PRIVATE);
mEditor = mPreferences.edit();
// 读取配置文件中'color'数据
int color = mPreferences.getInt("color", 0xffffffff);
// 应用配置文件
bg.setBackgroundColor(color);

button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mEditor.putInt("color", RED);
mEditor.commit();
bg.setBackgroundColor(RED);
}
});

blueButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mEditor.putInt("color", BLUE);
mEditor.apply();
bg.setBackgroundColor(BLUE);
}
});

mEditor.putString("time", (new Date()).toString());
mEditor.commit();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: