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

  • 相关阅读:
    9个offer,12家公司,35场面试,从微软到谷歌,应届计算机毕业生的2012求职之路(转)
    Path Sum(参考别人,二叉树DFS)
    tcp/ip
    常见Unix指令
    Pascal's Triangle II
    Implement strStr()
    LeetCode总结
    从LLVM源码学C++(一)
    面试题:1到N中,1出现的次数
    面试题:数组划分成两个子数组,和的差值的绝对值最小
  • 原文地址:https://www.cnblogs.com/Dylanblogs/p/4190234.html
Copyright © 2011-2022 走看看