說到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>