【android学习】SharedPreferences详解

来源:互联网 发布:ubuntu开机启动程序 编辑:程序博客网 时间:2024/06/05 17:21

1,概念

SharedPreferences是Android平台上一个轻量级的存储类,用来保存应用的一些常用配置,以XML文件的形式存储的键值对(key-value)数据的数据存储方式保存在 /data/data/PACKAGE_NAME/shared_prefs目录下。

2,用处

一般用于储存应用的配置等信息。
注意:SharedPreferences文件并不安全,手机root后即可查看其信息,请勿存储用户信息、密码等敏感信息。

3,举例

1)保存Activity状态

Activity暂停时,将此activity的状态保存到SharedPereferences中;当Activity重载,系统回调方法onSaveInstanceState时,再从SharedPreferences中将值取出。

2)保存程序配置信息

如如是否打开音效、是否使用震动效果、小游戏的玩家积分等。

4,优缺点

1)优点

①可以全局共享访问
②对于常规的轻量级而言比SQLite好一点。
当存储量不大的时候可以考虑自己定义文件格式。

2)缺点

①保存为xml文件,整体效率来看不是特别的高,但却高于SQLite。
xml处理时Dalvik会通过自带底层的本地XML Parser解析,比如XMLpull方式,这样对于内存资源占用比较好。
②安全性较差,请勿保存敏感信息。

5,安全性

1)开发者在创建文件时务必选取合适的创建模式(MODE_PRIVATE、MODE_WORLD_READABLE以及MODE_WORLD_WRITEABLE)进行权限控制。
2)避免使用MODE_WORLD_WRITEABLE和MODE_WORLD_READABLE模式创建进程间通信的文件,此处即为Shared Preferences;如果需要与其他进程应用进行数据共享,请考虑使用content provider。
3)不要在使用“android:sharedUserId”属性的同时,对应用使用测试签名,否则其他应用拥有“android:sharedUserId”属性值和测试签名时,将会访问到内部存储文件数据。

6,demo

    //FILE_BD  保存账户绑定信息    SharedPreferences preferences_BD = null;    String FILE_BD = "saveUserBind";//用于保存账户绑定信息    ...    //读入信息    void PutScopeClose(){        if (preferences_BD == null) {            preferences_BD = mContext.getSharedPreferences(FILE_BD, MODE_PRIVATE);                  }                   Editor editPhone = preferences_BD.edit();        switch (arr[1]) {        case "onebind":            editPhone.putString("Scope_Close1", arr[2]);            break;        case "twobind":            editPhone.putString("Scope_Close2", arr[2]);            break;        }        editPhone.commit();    }    //获取开启关闭安全距离信息    String GetScopeClose(){        String sendStr="";        preferences_BD = mContext.getSharedPreferences(FILE_BD, MODE_PRIVATE);        sendStr = preferences_BD.getString("Scope_Close1", "close") + "," +                 preferences_BD.getString("Scope_Close2", "close") + "," + ":end" + ",";        return sendStr;    }
0 0