zoukankan      html  css  js  c++  java
  • Android SharedPreferences的理解与使用

    Android 五种数据存储的方式分别为:
    1. SharedPreferences:以Map形式存放简单的配置参数;
    2. ContentProvider:将应用的私有数据提供给其他应用使用;
    3. 文件存储:以IO流形式存放,可分为手机内部和手机外部(sd卡等)存储,可存放较大数据;
    4. SQLite:轻量级、跨平台数据库,将所有数据都是存放在手机上的单一文件内,占用内存小;
    5. 网络存储 :数据存储在服务器上,通过连接网络获取数据;

    Sharedpreferences是Android平台上一个轻量级的存储类,用来保存应用程序的各种配置信息,其本质是一个以“键-值”对的方式保存数据的xml文件,其文件保存在/data/data//shared_prefs目录下。在全局变量上看,其优点是不会产生Application 、 静态变量的OOM(out of memory)和空指针问题,其缺点是效率没有上面的两种方法高。
    1.获取SharedPreferences

     要想使用 SharedPreferences 来存储数据,首先需要获取到 SharedPreferences 对象。Android中主要提供了三种方法用于得到 SharedPreferences 对象。
     1. Context 类中的 getSharedPreferences()方法:
     此方法接收两个参数,第一个参数用于指定 SharedPreferences 文件的名称,如果指定的文件不存在则会创建一个,第二个参数用于指定操作模式,主要有以下几种模式可以选择。MODE_PRIVATE 是默认的操作模式,和直接传入 0 效果是相同的。
     MODE_WORLD_READABLE 和 MODE_WORLD_WRITEABLE 这两种模式已在 Android 4.2 版本中被废弃。

    Context.MODE_PRIVATE: 指定该SharedPreferences数据只能被本应用程序读、写;
    Context.MODE_WORLD_READABLE:  指定该SharedPreferences数据能被其他应用程序读,但不能写;
    Context.MODE_WORLD_WRITEABLE:  指定该SharedPreferences数据能被其他应用程序读;
    Context.MODE_APPEND:该模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件;


     2. Activity 类中的 getPreferences()方法:
     这个方法和 Context 中的 getSharedPreferences()方法很相似,不过它只接收一个操作模式参数,因为使用这个方法时会自动将当前活动的类名作为 SharedPreferences 的文件名。

     3. PreferenceManager 类中的 getDefaultSharedPreferences()方法:
     这是一个静态方法,它接收一个 Context 参数,并自动使用当前应用程序的包名作为前缀来命名 SharedPreferences 文件。
    2.SharedPreferences的使用

    SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过SharedPreferences.edit()获取的内部接口Editor对象实现。使用Preference来存取数据,用到了SharedPreferences接口和SharedPreferences的一个内部接口SharedPreferences.Editor,这两个接口在android.content包中;

     1)写入数据:
         //步骤1:创建一个SharedPreferences对象
         SharedPreferences sharedPreferences= getSharedPreferences("data",Context.MODE_PRIVATE);
         //步骤2: 实例化SharedPreferences.Editor对象
         SharedPreferences.Editor editor = sharedPreferences.edit();
         //步骤3:将获取过来的值放入文件
         editor.putString("name", “Tom”);
         editor.putInt("age", 28);
         editor.putBoolean("marrid",false);
         //步骤4:提交               
         editor.commit();


     2)读取数据:
         SharedPreferences sharedPreferences= getSharedPreferences("data", Context .MODE_PRIVATE);
         String userId=sharedPreferences.getString("name","");

    3)删除指定数据
         editor.remove("name");
         editor.commit();


    4)清空数据
         editor.clear();
         editor.commit();

    参考文章:https://blog.csdn.net/brooksjames/article/details/80039928

  • 相关阅读:
    Android自定义drawable(Shape)详解
    如何设置对话框的宽度和高度
    Android资料之-EditText中的inputType
    android4.0 禁止横竖屏切换使用 android:configChanges="orientation|keyboardHidden"无效的解决方法
    android ScrollView 充满屏幕
    治疗神经衰弱最有效的方法和药物是什么
    交换机和路由器的区别
    小众编程语言同样值得你关注
    RotateAnimation详解
    你可能没听过的 Java 8 中的 10 个特性
  • 原文地址:https://www.cnblogs.com/cxeye/p/15131599.html
Copyright © 2011-2022 走看看