SharedPreferences存取特殊數據

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章