zoukankan      html  css  js  c++  java
  • Android 开发笔记 “SharePreference 数据存取”

    除了SQLite数据库外,SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/<包名>/shared_prefs目录下。SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现。实现SharedPreferences存储的步骤如下:

      一、根据Context获取SharedPreferences对象

      二、利用edit()方法获取Editor对象。

      三、通过Editor对象存储key-value键值对数据。

      四、通过commit()方法提交数据。

         具体实现代码如下:

    public class MainActivity extends Activity {
         @Override
         public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
           
            //获取SharedPreferences对象
            Context ctx = MainActivity.this;      
            SharedPreferences sp = ctx.getSharedPreferences("SP", MODE_PRIVATE);
            //存入数据
            Editor editor = sp.edit();
            editor.putString("STRING_KEY", "string");
            editor.putInt("INT_KEY", 0);
            editor.putBoolean("BOOLEAN_KEY", true);
            editor.commit();
           
            //返回STRING_KEY的值
            Log.d("SP", sp.getString("STRING_KEY", "none"));
            //如果NOT_EXIST不存在,则返回值为"none"
            Log.d("SP", sp.getString("NOT_EXIST", "none"));
         }
     }

    sharedPreferences常用的属性和方法

    方法名称

    描述

    public abstract boolean contains (String key)

    判断SharedPreferences是否包含特定key的数据

    public abstract SharedPreferences.Editor edit ()

    返回一个Edit对象用于操作SharedPreferences

    public abstract Map<String, ?> getAll ()

    获取SharedPreferences数据里全部的key-value对

    getXXX(String key,XXX defvlaue)

    获取SharedPreferences数据指定key所对应的value,如果该key不存在,返回默认值defValue。其中XXX可以是boolean、float、int、long、String等基本类型的值

    由于SharedPreference是一个接口,而且在这个接口里并没有提供写入数据和读取数据的能力。但是在其内部有一个Editor内部的接口,Edit这个接口有一系列的方法用于操作SharedPreference。

    Editor接口的常用方法

    方法名称

    描述

    public abstract SharedPreferences.Editor clear ()

    清空SharedPreferences里所有的数据

    public abstract boolean commit ()

    当Editor编辑完成后,调用该方法可以提交修改,而且必须要调用这个数据才修改

    public abstract SharedPreferences.Editor putXXX (String key, boolean XXX)

    向SharedPreferences存入指定的key对应的数据,其中XXX可以是boolean、float、int、long、String等基本类型的值

    public abstract SharedPreferences.Editor remove (String key)

    删除SharedPreferences里指定key对应的数据项

    SharedPreferences是一个接口,程序是无法创建SharedPreferences实例的,可以通过Context.getSharedPreferences(String name,int mode)来得到一个SharedPreferences实例

    name:是指文件名称,不需要加后缀.xml,系统会自动为我们添加上。一般这个文件存储在/data/data/<package name>/shared_prefs下(这个面试常问到)

    mode:是指定读写方式,其值有三种,分别为:

    Context.MODE_PRIVATE:指定该SharedPreferences数据只能被本应用程序读、写

    Context.MODE_WORLD_READABLE:指定该SharedPreferences数据能被其他应用程序读,但不能写

    Context.MODE_WORLD_WRITEABLE:指定该SharedPreferences数据能被其他应用程序读写。

    更多信息可以查看:http://blog.sina.com.cn/s/blog_4f1c99de0101hur1.html

  • 相关阅读:
    【Nowcoder71E】组一组(差分约束,最短路)
    【CodeChef】Querying on a Grid(分治,最短路)
    【BZOJ4061】[Cerc2012]Farm and factory(最短路,构造)
    【AtCoder3611】Tree MST(点分治,最小生成树)
    【AtCoder2134】ZigZag MST(最小生成树)
    【CF891C】Envy(最小生成树)
    【BZOJ5339】[TJOI2018]教科书般的亵渎(斯特林数)
    【BZOJ5337】[TJOI2018]str(动态规划,哈希)
    【BZOJ5336】[TJOI2018]party(动态规划)
    【BZOJ5335】[TJOI2018]智力竞赛(二分图匹配)
  • 原文地址:https://www.cnblogs.com/Dylanblogs/p/4190234.html
Copyright © 2011-2022 走看看