安卓数据存储详解-孙霞霞著
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【sharePreferences】共享参数:
概念:SharedPreferences是Android系统提供的一个通用的数据持久化框架,
用于存储和读取key-value类型的原始基本数据类型对,目前支持String、int、long、float、boolean等基本类型的存储,对于自定义的对象数据类型,无法
使用SharedPreferences来存储。
他通常以xml文件方式存储在data文件夹中,文件存储路径:
/data/data/{appPackageName}/shared_prefs/{filename}
SharedPreferences主要用于存储系统的配置信息。例如上次登录的用户名,
上次最后设置的配置信息(如:是否打开音效、是否使用振动,小游戏的玩家
积分等)。当再次启动程序后依然保持原有设置。SharedPreferences用键值对方式存储,方便写入和读取。
注:SharePreferenced本身的对象不能对数据进行存储和修改,只能获取到数据,是通过Editor的实例化对象对数据进行存储和修改。
常用方法
1.Context.getSharedPreferences(String, int mode)
mode的属性值有:
Context.MODE_PRIVATE:指定该SharedPreferences的数据只能
被本应用程序读、写
Context.MODE_APPEND:新内容追加到原内容后
Context.MODE_WORLD_READABLE: 指定 SharedPreferences数据
能被其他应用程序读,但是不支持写
Context.MODE_WORLD_WRITEABLE: 指定 SharedPreferences数据
能被其他应用程序读、写会覆盖原数据;
可以使用"+"连接这些权限
2.contains(String key)
3.Map
4.getString(String key, String defValue)
5.SharedPreferences.Editor edit()
putString(String key, String value)
putStringSet(String key, Set
putBoolean(String key, boolean value)
clear()
commit() 编辑完数据之后必须提交
SharePreferenced存储数据的方法
1.创建一个SharePreferenced的对象:SharedPreferences pref = getSharedPreferences("name_pref", MODE_PRIVATE);
2.创建一个Editor的对象 : editor = pref.edit();
3.然后调用Editor对象的putXxx方法,把指定的key值和他相对应的数据存储到SharePreferenced当中。
4.调用Editor的commit()方法,把存储的数据内容或者修改的内容提交。:mit();
登录的实例:(重重点)
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(yout.activity_main);
userEt = (EditText)findViewById(erEt);
passEt = (EditText)findViewById(R.id.passEt);
chkSave = (CheckBox)findViewById(R.id.chkSaveUser);
pref = getSharedPreferences("name_pref", MODE_PRIVATE);
editor = pref.edit();
String name = pref.getString("name", null);//获取数据
if (name == null) {
chkSave.setChecked(false);
}else{
userEt.setText(name);
chkSave.setChecked(true);
}
}
public void loginClick(View v){
String name = userEt.getText().toString();
String pass = passEt.getText().toString();
if ("admin".equals(name)&&"123456".equals(pass)) {
if (chkSave.isChecked()) {
editor.putString("name", name);
mit();
}else{
editor.remove("name");
mit();
}
Toast.makeText(MainActivity.this, "登录成功", 0).show();
}else{
Toast.makeText(MainActivity.this, "登录失败", 0).show();
【file存储】
内部存储
好处:当手机应用被卸载删除的时候,不会有过多的存于垃圾,都会被一起清理掉。
常用方法:
1.FileOutputStream Context.openFileOutput (String filename, int mode)
Context.MODE_APPEND
Context.MODE_PRIVATE
Context.MODE_WORLD_READABLE
Context.MODE_WORLD_WRITEABLE
2.FileInputStream Context.openFileInput (String filename)
3.String[] Context.fileList()
4.Context.deleteFile(String filename)
文件存储的步骤: