SharedPreferences 的使用

SharedPreferences是一种轻量级的数据存储方式。它可以用键值对的方式把简单数据类型(boolean、int、float、long和String)存储在应用程序的私有目录下(data/data/包名/shared_prefs/)自己定义的xml文件中。

    SharedPreferences接口主要负责读取应用程序的Preferences数据,它提供了如下常用方法来访问SharedPreferences的key_value键值对。

   一般用在对app的配置信息的存储,和一些简单的需要保存的数据的存储。

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数据能被其他应用程序读写。

下面是我自己整理的SharedPreferences的使用接口,直接调用,很方便。希望帮到需要用的同志

package com.example.app;

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

public class Storage {
    private static final String SP_NAME = "flow_file";
    public static final String TotalMobileRxBytes = "TotalMobileRxBytes";
    public static final String LastMobileRxBytes = "LastMobileRxBytes";
    public static final String hasSend = "hassend";
    
    public static SharedPreferences getSharedPreferences(Context context){
        SharedPreferences sp = context.getSharedPreferences(SP_NAME, Context.MODE_WORLD_READABLE);
        return sp;
    }
    
    public static void saveString(Context con, String key, String value){
        SharedPreferences sp = getSharedPreferences(con);
        sp.edit().putString(key, value).commit();
        
    }
    public static void saveBoolean(Context con, String key, boolean value){
        SharedPreferences sp = getSharedPreferences(con);
        sp.edit().putBoolean(key, value).commit();
    }
    public static void saveLong(Context con, String key, Long value){
        SharedPreferences sp = getSharedPreferences(con);
        sp.edit().putLong(key, value).commit();
    }
    public static Long getLong(Context context, String key) {
            
            return getSharedPreferences(context).getLong(key, 0);
        }
        
    public static String getString(Context context, String key) {
            
            return getSharedPreferences(context).getString(key, "");
        }
    public static boolean getBlooean(Context context, String key) {
        
        return getSharedPreferences(context).getBoolean(key, false);
    }
    
}
原文地址:https://www.cnblogs.com/yuanyuan-5683/p/SharedPreferences.html