【Android开发之SharedPreferences的封装】沉舟侧畔千帆进,病树前头万木春。这篇文章主要讲述Android开发之SharedPreferences的封装相关的知识,希望能为你提供帮助。
对于大部分初学者来说,如果想利用SharedPreferences进行数据存储的话大部分人(包括本人)应该会这样:
存储:
SharedPreferences sharedPreferences = getSharedPreferences(context.getPackageName(), Context.MODE_PRIVATE); Editor editor = sharedPreferences.edit(); editor.putString("username", "Tom"); editor.putInt("password", 123456); editor.commit();
获取:
SharedPreferences sharedPreferences = getSharedPreferences(context.getPackageName(), Context.MODE_PRIVATE); String username = sharedPreferences.getString("username", ""); int password = sharedPreferences.getInt("password", 0);
虽然这样做代码没多少,如果是对于初学者练习来说无伤大雅。但是如果你是做一个项目开发来说,里面使用了大量的数据存数。每次都将上面的代码一遍一遍的重复,估计能让人崩溃。所以,对于实际项目开发来说,最好能将可以封装的工具类封装就进行封装。
下面是一个封装好的SharedPreferences的工具类,如果你有需要直接引用就OK:
package com.example.utl; import java.util.Map; import android.content.Context; import android.content.SharedPreferences; /** * 保存信息配置类 * * @author admin */ public class SharedPreferencesHelper { private SharedPreferences sharedPreferences; /* * 保存手机里面的名字 */ public String FILE_NAME = "shared_data"; private SharedPreferences.Editor editor; public SharedPreferencesHelper(Context context) { sharedPreferences = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE); editor = sharedPreferences.edit(); }/** * 存储 */ public void put(String key, Object object) { if (object instanceof String) { editor.putString(key, (String) object); } else if (object instanceof Integer) { editor.putInt(key, (Integer) object); } else if (object instanceof Boolean) { editor.putBoolean(key, (Boolean) object); } else if (object instanceof Float) { editor.putFloat(key, (Float) object); } else if (object instanceof Long) { editor.putLong(key, (Long) object); } else { editor.putString(key, object.toString()); } editor.commit(); }/** * 获取保存的数据 */ public Object getSharedPreference(String key, Object defaultObject) { if (defaultObject instanceof String) { return sharedPreferences.getString(key, (String) defaultObject); } else if (defaultObject instanceof Integer) { return sharedPreferences.getInt(key, (Integer) defaultObject); } else if (defaultObject instanceof Boolean) { return sharedPreferences.getBoolean(key, (Boolean) defaultObject); } else if (defaultObject instanceof Float) { return sharedPreferences.getFloat(key, (Float) defaultObject); } else if (defaultObject instanceof Long) { return sharedPreferences.getLong(key, (Long) defaultObject); } else { return sharedPreferences.getString(key, null); } }/** * 移除某个key值已经对应的值 */ public void remove(String key) { editor.remove(key); editor.commit(); }/** * 清除所有数据 */ public void clear() { editor.clear(); editor.commit(); }/** * 查询某个key是否存在 */ public Boolean contain(String key) { return sharedPreferences.contains(key); }/** * 返回所有的键值对 */ public Map< String, ?> getAll() { return sharedPreferences.getAll(); } }
推荐阅读
- 从零开始学android -- notification通知
- Android icon尺寸
- Android组件化开发(注意事项)
- Android使用Http协议访问网络
- 迅为嵌入式4412平台兼容3G/4G模块的安卓开发板
- 在 Azure WebApps 中运行64位 Asp.net Core 应用
- UIApplication深入研究
- Android定时任务
- java内存模型(JMM)之happens-before