SharedPreferences
其本质是基于XML文件存储的键值对
数据,通常用来存储比较简单的配置信息。一般存储String,int之类的简单的数据类型。一些自定义的数据类型要通过转码较为麻烦不建议使用。
使用
SharedPreference本身只是读取数据的作用,而对数据存储修改需要通过Editor对象进行操作。
数据一般存在/data/data/<pakagename>/shared_pref/
目录下
三种方法获取SharePreferences对象
- Context类中的getSharedPreferences(
"fileName",model
)方法。
参数前者是文件名,后者是操作模式。操作模式主要用其两种:
MODE_PRIVATE只有当前程序可以进行读写。
MODE_MULTI_PROCESS会有多个进程对同一个SharedPreferences文件进行读写。 - Activity类中的getPreferences()方法
默认将当前活动的类名作为文件名。 - PreferenceManager类中的getDafaultSharePreferences(
context
)方法
将程序的包名作为前缀命名文件。
记住密码实现
1、简单地设计界面
不累述,详情看图,完成后初始化控件。
2、SharedPreferences实现
在main.activity中添加如下代码:
//初始化SharedPreferences
pref = getSharedPreferences("userdatas",MODE_PRIVATE);
editor = pref.edit();
if(pref.getString("name","")!= null){//如果存储的数据中找到name的数据不为空
nameInput.setText(pref.getString("name",""));
passwordInput.setText(pref.getString("password",""));//有数据则填充
}
//按钮
loginBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(rememberPassword.isChecked()) {//如果是记住密码
String userName = nameInput.getText().toString();
String userPassword = passwordInput.getText().toString();
editor.putString("name", userName);
editor.putString("password", userPassword);
Toast.makeText(MainActivity.this, "已经存储了用户名密码", Toast.LENGTH_SHORT).show();
}else{
editor.clear();
Toast.makeText(MainActivity.this, "将不会存储您的数据并清除了旧的账号数据", Toast.LENGTH_SHORT).show();
}
editor.commit();//修改完必须提交才能生效
}
});
3、结果展示
上图是已经登陆存储了数据。可以用FileExplorer查看一下,在data/data/<包名>/shared_prefs/下,可见已经存储了数据文件。
导出可以查看数据也一致,为xml格式。