Android 数据存储之_SharedPreferences
来源:互联网 发布:2016网络流行伤感情歌 编辑:程序博客网 时间:2024/04/28 17:04
SharedPreferences是 Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一些默认欢迎语 登录的用户名和密码等。一般在Activity中 重载窗口状态onSaveInstanceState保存一般使用SharedPreferences完成,它提供了Android平台常规的Long长 整形、Int整形、String字符串型的保存。对于常规的轻量级而言比SQLite要好不少,如果真的存储量不大可以考虑自己定义文件格式。xml 处理时Dalvik会通过自带底层的本地XML Parser解析,比如XMLpull方式,这样对于内存资源占用比较好。
通过SharedPreferences可以将NVP(Name-value pair 名称-值对【又称键值对】)保存在android的文件系统中,而且通过SharedPreferences对文件系统的操作过程完全是屏蔽的。这样仅需要通过调用SharedPreferences 对键值对很方便的进行保存和读取。
在Android系统中,这些信息以XML文件的形式保存在 /data/data/PACKAGE_NAME /shared_prefs 目录下。
SharedPreferences的使用非常简单,能够轻松的存放数据和读取数据。 SharedPreferences只能保存简单类型的数据,例如,String、int等。一般会将复杂类型的数据转换成Base64编码,然后将转换 后的数据以字符串的形式保存在 XML文件中,再用SharedPreferences保存。
使用SharedPreferences保存key-value对的步骤如下:
(1)使用Activity类的getSharedPreferences方法获得SharedPreferences对象,其中存储key-value的文件的名称由getSharedPreferences方法的第一个参数指定。
[java]view plaincopy
SharedPreferences loinPasswd = getSharedPreferences(NAPASS, MODE_PRIVATE);
// Context.MODE_PRIVATE 访问模式
SharedPreferences 支持三中访问模式
MODE_PRIVATE
MODE_WORLD_READABLE
MODE_WORLD_WRITEABLE
// file:SharedPreferences的名称。这个名称和anroid文件系统中保存的文件名同名。
(2)使用SharedPreferences接口的edit获得SharedPreferences.Editor对象。
eg:
SharedPreferences.Editor loinpasswdedit = loinPasswd.edit();
(3)通过SharedPreferences.Editor接口的putXxx方法保存key-value对。其中Xxx表示不同的数据类型。例如:字符串类型的value需要用putString方法。
(4)通过SharedPreferences.Editor接口的commit方法保存key-value对。commit方法相当于数据库事务中的提交(commit)操作。
loinpasswdedit.putString(NAME, etName.getText().toString());
loinpasswdedit.putString(PASSWD, "");
loinpasswdedit.commit();
具体代码的书写流程为:
A、存放数据信息
// 第一步 获得SharedPreferences对象 如果存在则打开,如果不存在则创建。loinPasswd.xml
SharedPreferences loinPasswd = getSharedPreferences(NAPASS,
MODE_PRIVATE);
// 第二步 是对象可编辑,通过对象SharedPreferences.Editor
SharedPreferences.Editor loinpasswdedit = loinPasswd.edit();
// 第三步 SharedPreferences是通过键值对的形式存储数据的,把值put到对应的键上。
loinpasswdedit.putString(NAME, etName.getText().toString());
loinpasswdedit.putString(PASSWD, etPassWd.getText()
.toString());
// 修改好 一定要提交
loinpasswdedit.commit();
B、读取数据信息
// 第一步 获得SharedPreferences对象 打开loinPasswd.xml文件
SharedPreferences loinpasswd = getSharedPreferences(NAPASS, 0);
// 第二步 根据键值对 把对应的值取出来
String name = loinpasswd.getString(NAME, "").toString();
String passwd = loinpasswd.getString(PASSWD, "").toString();
对应的数据保存在:
File Explorer /<package name>/shared_prefs/loinPasswd.xml
主要代码 具体如下(仅供参考):
public class MainActivity extends ActionBarActivity {
protected static final String NAPASS = "loinPasswd";
protected static final String NAME = "name";
protected static final String PASSWD = "passwd";
protected static final String TAG = "com.example.sharepreferences.MainActivity";
private static EditText etName;
private static EditText etPassWd;
private static CheckBox checkBox;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
etName = (EditText) findViewById(R.id.et_name);
etPassWd = (EditText) findViewById(R.id.et_passwd);
Button button = (Button) findViewById(R.id.bt_login);
checkBox = (CheckBox) findViewById(R.id.cb_rem);
// 得到name passwd
getlogininfo();
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (checkBox.isChecked()) {
// 保存数据到SharedPreferences
Log.i(TAG, "checkBox isClickable ");
// 第一步 获得SharedPreferences对象 如果存在则打开,如果不存在则创建。loinPasswd.xml
SharedPreferences loinPasswd = getSharedPreferences(NAPASS,
MODE_PRIVATE);
// 第二步 是对象可编辑,通过对象SharedPreferences.Editor
SharedPreferences.Editor loinpasswdedit = loinPasswd.edit();
// 第三步 SharedPreferences是通过键值对的形式存储数据的,把值put到对应的键上。
loinpasswdedit.putString(NAME, etName.getText().toString());
loinpasswdedit.putString(PASSWD, etPassWd.getText()
.toString());
// 修改好 一定要提交
loinpasswdedit.commit();
} else {
Log.i(TAG, "checkBox is not Clickable ");
SharedPreferences loinPasswd = getSharedPreferences(NAPASS,
MODE_PRIVATE);
SharedPreferences.Editor loinpasswdedit = loinPasswd.edit();
loinpasswdedit.putString(NAME, etName.getText().toString());
loinpasswdedit.putString(PASSWD, "");
loinpasswdedit.commit();
}
}
});
}
private void getlogininfo() {
// 得到数据从SharedPreferences
// 第一步 获得SharedPreferences对象 打开loinPasswd.xml文件
SharedPreferences loinpasswd = getSharedPreferences(NAPASS, 0);
// 第二步 根据键值对 把对应的值取出来
String name = loinpasswd.getString(NAME, "").toString();
String passwd = loinpasswd.getString(PASSWD, "").toString();
etName.setText(name);
etPassWd.setText(passwd);
}
}
另外SharedPreferences 不仅能够保存数据,还可以实现不同应用程序间的数据共享。
如果将SharedPreferences的访问模式设置为全局读或者全局写。其他应用程序就可以读或写本应用的SharedPreferences数据。
访问者要知道共享者的包名称和SharedPreferences名称。通过context获得SharedPreferences对象。
3 0
- Android 数据存储之_SharedPreferences
- android数据存储_SharedPreferences
- Android数据存储_SharedPreferences
- android之存储篇_SharedPreferences存储方式
- android之存储篇_SharedPreferences存储方式
- android数据存储_SharedPreferences的简单使用
- android数据存储_SharedPreferences的简单使用
- Android存储_SharedPreferences
- Android基础_数据存储二_SharedPreferences存储
- android(8)_数据存储与访问2_SharedPreferences
- Android基础_SharedPreferences
- Android之数据存储
- Android之数据存储
- Android之数据存储
- Android之数据存储
- Android数据存储之文件存储数据
- Android数据存储之ContentProvider存储数据
- android 数据存储 之 《网络存储数据》
- XTU Monthly, April 2014
- 开源flashplayer汇总.
- Makefile中的静态模式
- XML 特殊字符处理
- 自己写了个Box类,是unity自带的Rect类的3D升级版,功能还很少~~
- Android 数据存储之_SharedPreferences
- FastJson定制序列化
- java中&和&&的区别
- 回忆的老墙
- 配置ArcGIS Server10.0之后,报错ManagedPipelineHandler,如何解决?
- IE兼容模式及客户端兼容模式、服务器端兼容模式设置
- Sql Server 添加删除字段判断表或字段是否存在得到字段描述
- 虚拟运营商品牌扎堆发布 新盈利模式将倒逼改革
- CImage 贴背景图jpg格式