安卓学习之路之数据存储方式之SharedPreferences

来源:互联网 发布:更改mac屏幕下面的图标 编辑:程序博客网 时间:2024/05/10 02:42

SharedPreferences:  通过键值对形式保存简单的,私有的数据.

存储的类型是基本数据类型,所以常用来存储应用的配置信息,用户设置的参数等数据不大的数据;

数据存储的方式是以"键值对的"形式

SharedPreferences存储的数据的路径是/data/data/应用程序的包名/shared_prefs的目录下

在这个目录下,SharedPreferences的数据是以xml文件格式存储的,所以SharedPreferences的读写就是对xml文件的解析和写入的过程.

读数据


想要用SharedPreferences读数据,首先要获得一个SharedPreferences的对象,有两种方法:

第一,直接在用上下文的对象调用getSharedPreferences();如果一个Activity需要使用多个SharedPreferences的文件,

使用这个方法,这个方法的第一个参数是SharedPreferences的文件的文件名即XML的文件名;

第二, 也是用上下文的对象调用getPreferences();如果一个Activity只是需要使用一个SharedPreferences的文件的话,可以使用这个方法,这个方法没有参数,调用这个方法后,可以在/data/data/应用程序的包名/shared_prefs的目录下找到一个和当前的Activity的类名一样的XML文件的文件名;

   


写数据:

写数据可以分四步
1,用getSharedPreferences();或者getPreferences()方法得到一个SharedPreferences对象.

2. 调用SharedPreferences对象的edit()方法,获得一个SharedPreferences.Editor的内部类的对象

3.调用Editor对象的putInt(),putString();等方法,第一个参数为key(键),第二个value(值)

4,使用Editor对象的commit()方法,提交修改,否则,无法写入数据

下面是一个简单的案列

简单的说明下getSharedPreferences()的两个参数

 参数1:保存数据文件的名称

 参数2:数据的标记

 MODE_PRIVATE:数据只能被本应用程序读和写 这是是我们经常使用的
MODE_APPEND:新内容能追加到原内容之后
MODE_WORLD_READABLE:能被其他程序读  但不能写
MODE_WORLD_WRITEABLE:能被其他程序读和写



public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}public void OnclickBtn(View v){switch (v.getId()) {case R.id.btn_save://保存数据/** * 参数1:保存数据文件的名称 *  * 参数2:数据的标记 *  * MODE_PRIVATE:数据只能被本应用程序读和写 * MODE_APPEND:新内容能追加到原内容之后 * MODE_WORLD_READABLE:能被其他程序读  但不能写 * MODE_WORLD_WRITEABLE:能被其他程序读和写 *  *  * <?xml version='1.0' encoding='utf-8' standalone='yes' ?><map><float name="floatType" value="1.0" /><int name="intType" value="34" /><string name="stringType">你好</string><boolean name="booleanType" value="true" /><long name="longType" value="123" /></map> *  * 保存的路径:data/data/程序包名/shard_prefs/参数1.xml *  *///SharedPreferences preferences = getSharedPreferences("info", Context.MODE_PRIVATE);SharedPreferences preferences = getPreferences(Context.MODE_PRIVATE);//获取编辑者对象Editor editor = preferences.edit();editor.putBoolean("booleanType", true);editor.putFloat("floatType", 1.0f);editor.putInt("intType", 34);editor.putLong("longType", 123l);editor.putString("stringType", "你好");//要提交数据editor.commit();break;case R.id.btn_get://获取数据//SharedPreferences preferences2 = getSharedPreferences("info", Context.MODE_PRIVATE);SharedPreferences preferences2 = getPreferences(Context.MODE_PRIVATE);boolean b1 = preferences2.getBoolean("booleanType", false);    int int1 =preferences2.getInt("intType", -1);    String str = preferences2.getString("stringType", "defauls");    String str1 = preferences2.getString("stringType1", "defauls");        Log.i("==SharedPreferences==", b1+"    "+int1+"   "+str+"   "+str1);break;default:break;}}


0 0
原创粉丝点击