当前位置:   article > 正文

Android --- SharedPreferences的详细介绍_android sharedpreferences

android sharedpreferences

概念理解:

SharedPreferences 是一个轻量级的存储类,主要是保存一些小的数据,一些状态信息.做软件开发应该都知道,很多软件会有配置文件,里面存放这程序运行当中的各个属性值,由于其配置信息并不多,如果采用数据库来存放并不划算,因为数据库连接跟操作等耗时大大影响了程序的效率,因此我们使用键值这种一一对应的关系来存放这些配置信息。SharedPreferences正是Android中用于实现这中存储方式的技术。

SharedPreferences的使用非常简单,能够轻松的存放数据和读取数据。SharedPreferences只能保存简单类型的数据,例如,String、int等。一般会将复杂类型的数据转换成Base64编码,然后将转换后的数据以字符串的形式保存在 XML文件中,再用SharedPreferences保存。

getSharedPreferences 方法介绍

其中两个参数的意义为

public SharedPreferences getSharedPreferences(String name, int mode) {
    return mBase.getSharedPreferences(name, mode);
}
  • 1
  • 2
  • 3

name为本组件的配置文件名( 自己定义,也就是一个文件名)

mode为操作模式,默认的模式为0或MODE_PRIVATE,还可以使用MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE

mode指定为MODE_PRIVATE,则该配置文件只能被自己的应用程序访问。
mode指定为MODE_WORLD_READABLE,则该配置文件除了自己访问外还可以被其它应该程序读取。
mode指定为MODE_WORLD_WRITEABLE,则该配置文件除了自己访问外还可以被其它应该程序读取和写入

使用SharedPreferences保存key-value键值对的步骤如下:

(1)使用SharedPreferences接口的Editor 获得SharedPreferences.Editor 对象editor。
代码实例如下:

private SharedPreferences.Editor editor;
  • 1

(2)使用Activity类的getSharedPreferences方法获得SharedPreferences对象,其中存储key-value的文件的名称由getSharedPreferences方法的第一个参数指定。
代码实例如下:

private SharedPreferences preferences;
private SharedPreferences.Editor editor;

public Sputil(Context context) {
    preferences = context.getSharedPreferences("com.ihome.za_home.setting", context.MODE_PRIVATE);
    editor = preferences.edit();
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

(3)通过SharedPreferences.Editor接口的putXxx方法保存key-value 对。其中Xxx表示不同的数据类型。例如:字符串类型的value需要用 putString方法。
代码实例如下:

public void putString(String key, String value) {
    editor.putString(key, value);
    editor.commit();
}
public void putBoolean(String key, boolean value) {
    editor.putBoolean(key, value);
    editor.commit();
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

(4)通过SharedPreferences.Editor接口的commit方法保存key-value 对。commit方法相当于数据库事务中的提交(commit)操作。
如(3)所示,直接在内部提交了

栗子1

import android.content.Context;
import android.content.SharedPreferences;

public class Sputil {
    private SharedPreferences preferences;
    private SharedPreferences.Editor editor;

    public Sputil(Context context) {
        preferences = context.getSharedPreferences("com.xiaoqinglong.chong", context.MODE_PRIVATE);
        editor = preferences.edit();
    }


    /**
     * 向SP存入指定key对应的数据
     * 其中value可以是String、boolean、float、int、long等各种基本类型的值
     * @param key
     * @param value
     */
    public void putString(String key, String value) {
        editor.putString(key, value);
        editor.commit();
    }

    public void putBoolean(String key, boolean value) {
        editor.putBoolean(key, value);
        editor.commit();
    }

    public void putFloat(String key, float value) {
        editor.putFloat(key, value);
        editor.commit();
    }

    public void putInt(String key, int value) {
        editor.putInt(key, value);
        editor.commit();
    }

    public void putLong(String key, long value) {
        editor.putLong(key, value);
        editor.commit();
    }

    /**
     * 清空SP里所以数据
     */
    public void clear() {
        editor.clear();
        editor.commit();
    }

    /**
     * 删除SP里指定key对应的数据项
     * @param key
     */
    public void remove(String key) {
        editor.remove(key);
        editor.commit();
    }

    /**
     * 获取SP数据里指定key对应的value。如果key不存在,则返回默认值defValue。
     * @param key
     * @param defValue
     * @return
     */
    public String getString(String key, String defValue) {
        return preferences.getString(key, defValue);
    }

    public boolean getBoolean(String key, boolean defValue) {
        return preferences.getBoolean(key, defValue);
    }

    public float getFloat(String key, float defValue) {
        return preferences.getFloat(key, defValue);
    }

    public int getInt(String key, int defValue) {
        return preferences.getInt(key, defValue);
    }

    public long getLong(String key, long defValue) {
        return preferences.getLong(key, defValue);
    }

    /**
     * 判断SP是否包含特定key的数据
     * @param key
     * @return
     */
    public boolean contains(String key){
        return preferences.contains(key);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96

栗子2

存放数据信息

(1)、打开Preferences,名称为setting,如果存在则打开它,否则创建新的Preferences

SharedPreferences settings = getSharedPreferences(“setting”, 0);
  • 1

(2)、让setting处于编辑状态

SharedPreferences.Editor editor = settings.edit();
  • 1

(3)、存放数据

editor.putString(“name”,”ATAAW”);
editor.putString(“URL”,”ATAAW.COM”);
  • 1
  • 2

(4)、完成提交

editor.commit();
  • 1

读取数据信息

(1)、获取Preferences

SharedPreferences settings = getSharedPreferences(“setting”, 0);
  • 1

(2)、取出数据

String name = settings.getString(“name”,”默认值”);
String url = setting.getString(“URL”,”default”);
  • 1
  • 2

就介绍到这里了,有什么不理解的或者是小编有错误的地方,都可以在评论区留言,如果对你有益处的话记得收藏哦在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码领袖开发者/article/detail/60732
推荐阅读
相关标签
  

闽ICP备14008679号