zoukankan      html  css  js  c++  java
  • SharePerference 使用详解

    极力推荐文章:欢迎收藏
    Android 干货分享

    阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android

    本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:

    1. SharedPreferences的使用方法
    2. SharedPreferences保存数据的方法
    3. SharedPreferences读取数据的方法
    4. 总结SharedPreferencesUtils 封装类使用方法
    5. 小结

    SharedPreferencesAndroid的一个接口类,是Android 数据存储(保存内部)的一种方法。主要以*.xml 的形式保存在Android /data/data/com.***包名/shared_prefs下,SharedPreferences 类提供了一个通用框架,以便用户能够保存和检索原始数据类型的键值对,原始数据类型如下:BooleanIntFloatLongString

    1. SharedPreferences的使用方法

    SharedPreferences 使用方法如下:

    1. 创建保存数据的xml文件
    2. 使用Editorxml文件中保存数据
    3. commit()保存数据
    4. xml保存地方
      /data/data/com.***包名/shared_prefs

    2. SharedPreferences 保存数据的方法

    主要使用 putBoolean()putString()putInt()等方法添加值。

    3. SharedPreferences读取数据的方法

    主要使用 getBoolean() getString() getInt()等 获取保存的数据

    4. 总结SharePerference Utils 封装类使用方法

    移除SharePerference 保存的值

    	private static SharedPreferences sp;
    	private static String SPXMLNAME = "sp_config";
    
    	/**
    	 * @param ctx
    	 *            上下文环境
    	 * @param key
    	 *            要从config.xml移除节点的name的名称
    	 */
    	public static void removeKey(Context ctx, String key) {
    		if (sp == null) {
    			sp = ctx.getSharedPreferences(SPXMLNAME, Context.MODE_PRIVATE);
    		}
    		sp.edit().remove(key).commit();
    	}
    
    

    保存,获取 Boolean 类型值方法

    	// 1,存储boolean变量方法
    	public static void putBoolean(Context ctx, String key, boolean value) {
    		// name存储文件名称
    		if (sp == null) {
    			sp = ctx.getSharedPreferences(SPXMLNAME, Context.MODE_PRIVATE);
    		}
    		sp.edit().putBoolean(key, value).commit();
    	}
    
    	// 2,读取boolean变量方法
    	public static boolean getBoolean(Context ctx, String key, boolean defValue) {
    		// name存储文件名称
    		if (sp == null) {
    			sp = ctx.getSharedPreferences(SPXMLNAME, Context.MODE_PRIVATE);
    		}
    		return sp.getBoolean(key, defValue);
    	}
    
    

    保存,获取 String类型值方法

    
    	public static void putString(Context ctx, String key, String value) {
    		// name存储文件名称
    		if (sp == null) {
    			sp = ctx.getSharedPreferences(SPXMLNAME, Context.MODE_PRIVATE);
    		}
    		sp.edit().putString(key, value).commit();
    	}
    
    	public static String getString(Context ctx, String key, String defValue) {
    		// name存储文件名称
    		if (sp == null) {
    			sp = ctx.getSharedPreferences(SPXMLNAME, Context.MODE_PRIVATE);
    		}
    		return sp.getString(key, defValue);
    	}
    
    

    保存,获取Int类型值方法

    	//
    	public static void putInt(Context ctx, String key, int value) {
    		// name存储文件名称
    		if (sp == null) {
    			sp = ctx.getSharedPreferences(SPXMLNAME, Context.MODE_PRIVATE);
    		}
    		sp.edit().putInt(key, value).commit();
    	}
    
    	public static int getInt(Context ctx, String key, int defValue) {
    		// name存储文件名称
    		if (sp == null) {
    			sp = ctx.getSharedPreferences(SPXMLNAME, Context.MODE_PRIVATE);
    		}
    		return sp.getInt(key, defValue);
    	}
    

    SharePerferenceUtils

    package com.programandroid.Utils;
    
    import android.content.Context;
    import android.content.SharedPreferences;
    
    /*
     * SharePerferenceUtils.java
     *
     *  Created on: 2017-9-24
     *      Author: wangjie
     * 
     *  Welcome attention to weixin public number get more info
     *
     *  WeiXin Public Number : ProgramAndroid
     *  微信公众号 :程序员Android
     *
     */
    public class SharePerferenceUtils {
    
    	private static SharedPreferences sp;
    	private static String SPXMLNAME = "sp_config";
    
    	/**
    	 * @param ctx
    	 *            上下文环境
    	 * @param key
    	 *            要从config.xml移除节点的name的名称
    	 */
    	public static void removeKey(Context ctx, String key) {
    		if (sp == null) {
    			sp = ctx.getSharedPreferences(SPXMLNAME, Context.MODE_PRIVATE);
    		}
    		sp.edit().remove(key).commit();
    	}
    
    	// 1,存储boolean变量方法
    	public static void putBoolean(Context ctx, String key, boolean value) {
    		// name存储文件名称
    		if (sp == null) {
    			sp = ctx.getSharedPreferences(SPXMLNAME, Context.MODE_PRIVATE);
    		}
    		sp.edit().putBoolean(key, value).commit();
    	}
    
    	// 2,读取boolean变量方法
    	public static boolean getBoolean(Context ctx, String key, boolean defValue) {
    		// name存储文件名称
    		if (sp == null) {
    			sp = ctx.getSharedPreferences(SPXMLNAME, Context.MODE_PRIVATE);
    		}
    		return sp.getBoolean(key, defValue);
    	}
    
    	public static void putString(Context ctx, String key, String value) {
    		// name存储文件名称
    		if (sp == null) {
    			sp = ctx.getSharedPreferences(SPXMLNAME, Context.MODE_PRIVATE);
    		}
    		sp.edit().putString(key, value).commit();
    	}
    
    	public static String getString(Context ctx, String key, String defValue) {
    		// name存储文件名称
    		if (sp == null) {
    			sp = ctx.getSharedPreferences(SPXMLNAME, Context.MODE_PRIVATE);
    		}
    		return sp.getString(key, defValue);
    	}
    
    	//
    	public static void putInt(Context ctx, String key, int value) {
    		// name存储文件名称
    		if (sp == null) {
    			sp = ctx.getSharedPreferences(SPXMLNAME, Context.MODE_PRIVATE);
    		}
    		sp.edit().putInt(key, value).commit();
    	}
    
    	public static int getInt(Context ctx, String key, int defValue) {
    		// name存储文件名称
    		if (sp == null) {
    			sp = ctx.getSharedPreferences(SPXMLNAME, Context.MODE_PRIVATE);
    		}
    		return sp.getInt(key, defValue);
    	}
    
    }
    
    

    Activity 类中使用方法如下:

    1. 保存数据

    保存数据调用方法如下:

    SharePerferenceUtils.putInt(getApplicationContext(), "int_key", 1);
    

    2. 获取数据

    获取数据调用方法如下:

    SharePerferenceUtils.getString(getApplicationContext(), "string_key", "default_values");
    

    至此 SharedPreferences的使用方法以基本完成。

    5. 小结

    SharedPreferences 保存在app内部(/data/data/com.***包名/shared_prefs),当手动清除APK 数据的时候,保存的数据会被清除掉

    至此,本篇已结束,如有不对的地方,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!

    微信关注公众号:  程序员Android,领福利

  • 相关阅读:
    《WINDOWS编程启示录》第三章
    PowerDesigner 工具生成数据库Report指导
    周末感想一则
    自己写一个BUG管理工具
    Visual Studio.net 2008开发ActiveX过程与总结
    CBS项目总结中一张活动图的一点思考
    写一篇日志,记录被我整崩溃的电脑
    6 important .NET concepts: Stack, heap, Value types, reference types, boxing and Unboxing
    Visual Studio.net 2010 Windows Service 开发,安装与调试
    GameCard Refactoring Solution
  • 原文地址:https://www.cnblogs.com/wangjie1990/p/11310886.html
Copyright © 2011-2022 走看看