说到SharePrefrence,简称sp,大家一点不陌生,经常会用它存储一些简单数据,那么简单数据是什么?这里总结下
SharePrefrence中有个抽象类叫Editor,包含以下方法:
存储普通数据:
putBoolean(String key,boolean value),保存整型
putInt(String key,int value),保存int类型
putFloat(String key,float value),保存float类型
putLong(String key,long value),保存long类型
putString(String key,String value),保存字符串
存储set集合
putStringSet(String key,Set<String> values),保存set集合
以上是Editor中存储数据的方法
那么,实际开发中经常会遇到存储某个对象,某个list,怎么办呢?
利用Gson、FastJson等把某个Objectt或者某个ListObject转成普通String,用putString()保存,需要展示缓存内容时,get到String,利用Gson转成Object或者ListObject
存储Object对象
<code class="language-java hljs has-numbering"><span class="hljs-keyword"> public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">saveObject</span>(String key, Object obj) { SharedPreferences.Editor edit = settings.edit(); String str = gson.toJson(obj, obj.getClass()); edit.putString(key, str); edit.commit(); }</code>获取Object对象
public <T> T getObject(String key, Class<?> classItem) {
try {
String str = settings.getString(key, null);
if (str != null) {
return (T) gson.fromJson(str, classItem);
}
} catch (Exception e) {
<pre name="code" class="java"> }
}
存储ListObeject对象
<code class="language-java hljs has-numbering"> <span class="hljs-keyword">public</span> <T> <span class="hljs-keyword">void</span> <span class="hljs-title">saveListObject</span>(String key, List<T> list) { SharedPreferences.Editor edit = settings.edit(); String str = gson.toJson(list); edit.putString(key, str); edit.commit(); }</code>
获取ListObeject对象
<code class="language-java hljs has-numbering"></code><pre class="prettyprint" name="code"><code class="language-java hljs has-numbering"><span class="hljs-keyword"> public</span> List <span class="hljs-title">getListObject</span>(String key,Class<?> classItem) { JavaType javaType = mapper.getTypeFactory().constructCollectionType(ArrayList.class, classItem); <span class="hljs-keyword">try</span> { String str = settings.getString(key, <span class="hljs-keyword">null</span>); <span class="hljs-keyword">if</span> (str != <span class="hljs-keyword">null</span>) { <span class="hljs-keyword">return</span> mapper.readValue(str,javaType); } } <span class="hljs-keyword">catch</span> (Exception e) { } <span class="hljs-keyword"> return</span> <span class="hljs-keyword">null</span>; } </code>