zoukankan      html  css  js  c++  java
  • Android SharedPreferences存储详解

    什么是SharedPreferences存储

    • 一种轻量级的数据保存方式
    • 类似于我们常用的ini文件,用来保存应用程序的一些属性设置、较简单的参数设置
    • 保存现场:保存用户所作的修改或者自定义参数设定,当再次启动程序后回复上次退出时的状态。
    • 将NVP(Name/Value Pair,名称/值对)保存在Android的文件系统中(XML文件),完全屏蔽的对文件系统的操作过程。
    • 开发人员仅是通过调用SharedPreferences的API对NVP进行保存和读取
    • 除数据保存,还提供数据共享功能。
    • 主要支持3种数据访问模式(读写权限)
      私有(MODE_PRIVATE):仅创建程序可读、写
      全局读(MODE_WORLD_READABLE):创建程序可读
      写, 其他程序可读不可写
      全局写(MODE_WORLD_WRITEABLE):创建程序和
      其他程序都可写,但不可读!

    代码demo

    public static final String PREFERENCE_PACKAGE ="edu.hrbeu.SimplePreferenceDemo";
    public static int MODE = Context.MODE_WORLD_READABLE +Context.MODE_WORLD_WRITEABLE;
    public static final String PREFERENCE_NAME = "SaveSetting";
    
    public void onCreate(Bundle savedInstanceState) {
    	Context c = null;
    	try {
    		//获取SimplePreferenceDemo示例的Context
    		c = this.createPackageContext(PREFERENCE_PACKAGE,
    		Context.CONTEXT_IGNORE_SECURITY);
    	}
    	catch (NameNotFoundException e) {e.printStackTrace();}
    	//将正确的SharedPreferences名称传递给函数
    	SharedPreferences sharedPreferences =
    	c.getSharedPreferences( PREFERENCE_NAME, MODE );
    	//读取NVP
    	String name = sharedPreferences.getString("Name","Tom");
    	int age = sharedPreferences.getInt("Age", 20);
    	float height = sharedPreferences.getFloat("Height",);
    }
    

    使用方法

    1. 定义访问模式

    public static int MODE = MODE_PRIVATE
    //定义为私有模式
    public static int MODE = Context.MODE_WORLD_READABLE +
    Context.MODE_WORLD_WRITEABLE
    //访问模式可组合:既可以全局读,也可以全局写,将两种模式组合(+号或|号) 成下面的方式:
    

    2. 定义SharedPreferences的名称

    • 该名称与Android文件系统中保存的XML文件同名
    • (保存在:/data/data/<应用名>/shared_prefs/)
    • 相同名称的NVP内容,都会保存在同一个文件中
    public static final String PREFERENCE_NAME = "SaveSetting";
    

    3. 创建SharedPreferences对象

    将访问模式和名称作为参数,传递到getSharedPreferences()函数,并获得SharedPreferences对象

    SharedPreferences sharedPreferences =
    getSharedPreferences ( PREFERENCE_NAME, MODE );
    

    4.保存和修改

    • 通过SharedPreferences.Editor类进行修改
    • 调用commit()函数保存修改内容
      – 支持数据类型:整型、 布尔型、 浮点型和长整型等
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putString("Name", "Tom");
    editor.putInt("Age", 20);
    editor.putFloat("Height", (float)163.00 );
    editor.commit();
    

    5.读取数据

    • 通过get()函数获取NVP
      – 第1个参数是NVP的名称(Name)
      – 第2个参数是在无法获取到数值的时候使用的缺省值
    SharedPreferences sharedPreferences =
    getSharedPreferences(PREFERENCE_NAME, MODE);
    String name = sharedPreferences.getString("Name","Default Name");
    int age = sharedPreferences.getInt("Age", 20);
    

    6.数据保存位置

    在android studio 下方的logcat栏的最右边有一个Device File Explorer可以查看 虚拟机的文件

    在这里插入图片描述

    文件存储在以下目录

    /data/data/<package name>/shared_prefs/
    

    7. 共享条件

    • 共享者需要将SharedPreferences的访问模式设置为全局读或全局写
    • 访问者需要知道共享者的包名称和SharedPreferences的名称,以通过Context获得SharedPreferences对象
    • 访问者需要确切知道每个数据的名称和数据类型,用以正确读取数据
  • 相关阅读:
    如何升级 sof_to_rbf.bat 文件
    用sopc-create-header-files工具产生头文件提示找不到命令
    HTTP状态码
    HTML5与CSS3知识点总结
    uni-app input 监听回车键 输入回车确定
    原生微信小程序转换uni-app
    关闭vscode保存就自动格式化的功能
    uni-appH5(uni.chooseFile uni.chooseImage)限制图片类型
    uni-appH5(uni.chooseFile uni.chooseImage)上传图片大小限制大小
    textRNN & textCNN
  • 原文地址:https://www.cnblogs.com/qq874455953/p/9901042.html
Copyright © 2011-2022 走看看