欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android数据保存之SharedPreferences

程序员文章站 2022-04-22 10:57:54
提到安卓的数据保存大致分为以下几种: 1. 文件 2. 数据库SQLite 3. SharedPerferences 4. ContentProvider存储数据 5...

提到安卓的数据保存大致分为以下几种:

1. 文件

2. 数据库SQLite

3. SharedPerferences

4. ContentProvider存储数据

5. 网络存储数据 这里只介绍SharedPerferences

SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,载窗口状态onSaveInstanceState的保存一般使用SharedPreferences完成,它只支持一些常见的数据类型的存储,如long长整形、Int整形、String字符串型、boolean布尔型数据的保存。他通过键-值的形式保存数据到/data/data/包/shared_prefs文件夹下

方法介绍

1、说明

它提供一种轻量级的数据存储方式,通过eidt()方法来修改里面的内容,通过Commit()方法来提交修改后的内容。

2、重要方法

public abstract booleancontains (Stringkey) :检查是否已存在该文件,其中key是xml的文件名。

edit():为preferences创建一个编辑器Editor,通过创建的Editor可以修改preferences里面的数据,但必须执行commit()方法。

getAll():返回preferences里面的多有数据。

getBoolean(String key, booleandefValue):获取Boolean型数据

getFloat(String key, floatdefValue):获取Float型数据

getInt(String key, intdefValue):获取Int型数据

getLong(String key, longdefValue):获取Long型数据

getString(String key, StringdefValue):获取String型数据

registerOnSharedPreferenceChangeListener(SharedPreferences.OnSharedPreferenceChangeListenerlistener):注册一个当preference发生改变时被调用的回调函数。

unregisterOnSharedPreferenceChangeListener(SharedPreferences.OnSharedPreferenceChangeListenerlistener):删除当前回调函数。

3、重要接口SharedPreferences.Editor

用于修改SharedPreferences对象的内容,所有更改都是在编辑器所做的批处理,而不是复制回原来的SharedPreferences或持久化存储,直到你调用commit(),才将持久化存储。重要方法:

clear():清除内容。

commit():提交修改

remove(String key):删除preference

使用步骤:

1. 调用SharedPerferences对象的edit()方法获取SharedPerferences.Editor

对象(用于数据的添加修改等)

2. 向SharedPerferences.Editor对象添加数据,比如string型的,就调用putString()方法

3. 调用apply()h或commit()方法提交修改 代码举例:

SharedPreferences sharedPreferences;
SharedPreferences.Editor settingDataEditor;
private void initSettingData() {
    Log.e(TAG, "设置界面的初始化数据" );
    //得到本地sharedPreferences文件管理对象
    sharedPreferences = getSharedPreferences("settingData",MODE_PRIVATE);
    if(sharedPreferences.getString("isExists",null) != null){
        Log.e(TAG, "文件存在-》初始化" );
    }else {
        Log.e(TAG, "文件不存在-》新建" );
        //1.获取一个Editor对象
        settingDataEditor = getSharedPreferences("settingData",MODE_PRIVATE).edit();
        //2.添加数据,put方法参数:键名,值
        settingDataEditor.putString("isExists","exists");
        settingDataEditor.putBoolean("gravityData",true);
        settingDataEditor.putBoolean("bluetoothData",true);
        settingDataEditor.putBoolean("wifiData",false);
        //3.提交
        settingDataEditor.apply();
    }
}
private void getSetting() {
    //得到本地sharedPreferences文件管理对象和编辑对象
    sharedPreferences = getSharedPreferences("settingData",MODE_PRIVATE);
    //获取数据,get方法参数:键名,未得到数据后的返回值
    boolean isGravityOpen = sharedPreferences.getBoolean("gravityData",true);
    boolean  isBluetoothOpen = sharedPreferences.getBoolean("bluetoothData",true);
    boolean  isWifiOpen = sharedPreferences.getBoolean("wifiData",false);
}