• 使用SharedPreferences进行数据存储


    Android中存在着5种存储数据的方法:

    1、使用SharePreferences存储数据

    2、文件存储

    3、SQLite数据库存储

    4、使用ContentProvider存储数据

    5、网络存储

    这里只介绍SharePreferences的存储。

    SharePreferences类是一个轻量级的存储类,特别适合用于保存软件配置参数。使用SharedPreferences保存数据,其背后是用xml文件存放数据。在Android系统中,SharedPreferences中的信息以XML文件的形式保存在 /data/data/PACKAGE_NAME/shared_prefs目录下。这种方式主要用来存储比较简单的一些数据,而且是标准的Boolean、Int、Float、Long、String等类型。当你定义好SharedPreferences类存储文件的名字后无需考虑存储文件的后缀问题,因为Android系统会自动将你命名的文件后面加上.xml。例如:如果我的存储数据的文件名字是"user",那么,当我使用

    SharedPreferences preferences=getSharedPreferences("user",Context.MODE_PRIVATE);来存储时,在程序中将自动生成一个名为user.xml的文件。

    SharedPreferences数据的四种操作模式

    • Context.MODE_PRIVATE
    • Context.MODE_APPEND
    • Context.MODE_WORLD_READABLE
    • Context.MODE_WORLD_WRITEABLE
    Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容
    Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件.
    Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件
    MODE_WORLD_READABLE:表示当前文件可以被其他应用读取.
    MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入
     
     

    获取SharedPreferences的三种方式:

    android.content.SharedPreferences是一个接口,用来获取和修改持久化存储的数据。

    1.this.getPreferences (int mode)——调用Activity对象的getPreferences()方法
    通过Activity对象获取,获取的是本Activity私有的Preference,保存在系统中的xml形式的文件的名称为这个Activity的名字,因此一个Activity只能有一个,属于这个Activity。
    2.this.getSharedPreferences (String name, int mode)——调用Context对象的getSharedPreferences()方法
    因为Activity继承了ContextWrapper,因此也是通过Activity对象获取,但是属于整个应用程序,可以有多个,以第一参数的name为文件名保存在系统中。
    3.PreferenceManager.getDefaultSharedPreferences(this);

    PreferenceManager的静态函数,保存PreferenceActivity中的设置,属于整个应用程序,但是只有一个,Android会根据包名和PreferenceActivity的布局文件来起一个名字保存。

    前两种方式的区别:
    调用Context对象的getSharedPreferences()方法获得的SharedPreferences对象可以被同一应用程序下的其他组件共享.
    调用Activity对象的getPreferences()方法获得的SharedPreferences对象只能在该Activity中使用.
     

    用法

      存

    SharedPreferences preferences=getSharedPreferences("user",Context.MODE_PRIVATE);//user表示存储文件的名字
    Editor editor=preferences.edit();
    String name="xixi";
    String age="22";
    editor.putString("name", name);
    editor.putString("age", age);
    editor.commit();

      取

    从SharedPreferences中取数据

    SharedPreferences preferences=getSharedPreferences("user", Context.MODE_PRIVATE);
    String name=preferences.getString("name", "defaultname");
    String age=preferences.getString("age", "0");

      删除

    SharedPreferences pref = getSharedPreferences("user",Context.MODE_PRIVATE);
    Editor editor = pref.edit();
    editor.remove("name");
    editor.commit();

    有时因为程序需要我们可以把sharedPreferences单独写成一个工具类:

     1 /**
     2  * 保存数据应用 配置的集合类
     3  */
     4 public class SharedPreferencesUtil {
     5     public static final String SETTING_FILE = "boxue_userInfo";
     6 
     7     /**
     8      * 保存设置项到文件
     9      */
    10     public static void saveToFile(Context context, String key, String value) {
    11         SharedPreferences pref = context.getSharedPreferences(SETTING_FILE,
    12                 android.content.Context.MODE_PRIVATE);
    13         Editor editor = pref.edit();
    14         editor.putString(key, value);
    15         editor.commit();
    16     }
    17 
    18     /**
    19      * 删除
    20      */
    21     public static void deleteToFile(Context context, String key) {
    22         SharedPreferences pref = context.getSharedPreferences(SETTING_FILE,
    23                 android.content.Context.MODE_PRIVATE);
    24         Editor editor = pref.edit();
    25         editor.remove(key);
    26         editor.commit();
    27     }
    28 
    29     public static boolean isContains(Context context, String key) {
    30         SharedPreferences pref = context.getSharedPreferences(SETTING_FILE,
    31                 android.content.Context.MODE_PRIVATE);
    32         if (pref.contains(key)) {
    33             return true;
    34         } else {
    35             return false;
    36         }
    37     }
    38 
    39     /**
    40      * 获取设置项
    41      */
    42     public static String getFromFile(Context context, String key) {
    43         SharedPreferences pref = context.getSharedPreferences(SETTING_FILE,
    44                 android.content.Context.MODE_PRIVATE);
    45         return pref.getString(key, "");
    46     }
  • 相关阅读:
    WebApp 里Meta标签大全,webappmeta标签大全
    写给自己的Java程序员学习路线图
    JAVA学习路线图
    JavaScript经典作用域问题(转载)
    js 判断当前操作系统是ios还是android还是电脑端
    css动画,展开折叠图标
    CSU 1335 高桥和低桥
    codevs 1341 与3和5无关的数
    noi 7827 质数的和与积
    51nod 1082 与7无关的数
  • 原文地址:https://www.cnblogs.com/1925yiyi/p/7045192.html
Copyright © 2020-2023  润新知