欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Android中的SharedPreferences

 更新時間:2017年05月26日 10:15:26   作者:a15838319826  
這篇文章主要介紹了Android中的SharedPreferences,包括 SharedPreferences的特點和使用方法,需要的朋友可以參考下

 SharedPreferences作為Android存儲數(shù)據(jù)方式之一,主要特點是: 

1. 只支持Java基本數(shù)據(jù)類型,不支持自定義數(shù)據(jù)類型;

2. 應用內(nèi)數(shù)據(jù)共享;

3. 使用簡單.

使用方法

1、存數(shù)據(jù)

SharedPreferences sp = getSharedPreferences("sp_demo", Context.MODE_PRIVATE); 
sp.edit().putString("name", "小張").putInt("age", 11).commit(); 

或者下面的寫法也可以

SharedPreferences sp = getSharedPreferences("sp_demo", Context.MODE_PRIVATE); 
Editor editor = sp.edit(); 
editor.putString("name", "小張"); 
editor.putInt("age", 11); 
editor.commit(); 

切記不要寫成下面的形式,會導致數(shù)據(jù)無法存儲

SharedPreferences sp = getSharedPreferences("sp_demo", Context.MODE_PRIVATE); 
sp.edit().putString("name", "小張"); 
sp.edit().putInt("age", 11); 
sp.edit().commit(); 

  為什么這種方式無法存儲,因為sp.edit()每次都會返回一個新的Editor對象,Editor的實現(xiàn)類EditorImpl里面會有一個緩存的Map,最后commit的時候先將緩存里面的Map寫入內(nèi)存中的Map,然后將內(nèi)存中的Map寫進XML文件中。使用上面的方式commit,由于sp.edit()又重新返回了一個新的Editor對象,緩存中的Map是空的,所以導致數(shù)據(jù)無法被存儲。

2、取數(shù)據(jù)

SharedPreferences sp = getSharedPreferences("sp_demo", Context.MODE_PRIVATE); 
String name = sp.getString("name", null); 
int age = sp.getInt("age", 0); 
getSharedPreferences的具體實現(xiàn)是在frameworks/base/core/java/android/app/ContextImpl.java,代碼如下:
[html] view plain copy
@Override 
public SharedPreferences getSharedPreferences(String name, int mode) { 
  SharedPreferencesImpl sp; 
  synchronized (ContextImpl.class) { 
    ...... 
    final String packageName = getPackageName(); 
    ArrayMap<String, SharedPreferencesImpl> packagePrefs = sSharedPrefs.get(packageName); 
    if (packagePrefs == null) { 
      packagePrefs = new ArrayMap<String, SharedPreferencesImpl>(); 
      sSharedPrefs.put(packageName, packagePrefs); 
    } 
    ...... 
    sp = packagePrefs.get(name); 
    if (sp == null) { 
      File prefsFile = getSharedPrefsFile(name); 
      sp = new SharedPreferencesImpl(prefsFile, mode); 
      packagePrefs.put(name, sp); 
      return sp; 
    } 
  } 
  ...... 
  return sp; 
} 

SharedPreferencesImpl是SharedPreferences接口的具體實現(xiàn)類,一個name對應一個SharedPreferencesImpl,一個應用程序中根據(jù)name的不同會有多個SharedPreferencesImpl。

SharedPreferencesImpl的具體實現(xiàn)是在frameworks/base/core/java/android/app/SharedPreferencesImpl.java,我們可以通過getSharedPreferences獲得SharedPreferences的實例,當我們調(diào)用sp.getString等get方法取數(shù)據(jù)時,實際上是直接從內(nèi)存中的Map里面去取,get方法傳入的第一個參數(shù)正好是Map的key,第二個參數(shù)是當Map中沒有這個key對應值的時候,返回的默認值。

以上所述是小編給大家介紹的Android中的SharedPreferences,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Android Fragment實現(xiàn)底部通知欄

    Android Fragment實現(xiàn)底部通知欄

    這篇文章主要為大家詳細介紹了Android Fragment實現(xiàn)底部通知欄,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • Android獲取手機型號/系統(tǒng)版本號/App版本號等信息實例講解

    Android獲取手機型號/系統(tǒng)版本號/App版本號等信息實例講解

    本示例獲得手機型號,系統(tǒng)版本,App版本號等信息,具體實現(xiàn)如下,感興趣的朋友可以參考下哈
    2013-06-06
  • go語言之美迅速打rpm包實現(xiàn)詳解

    go語言之美迅速打rpm包實現(xiàn)詳解

    這篇文章主要為大家介紹了go語言之美迅速打rpm包實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • Flutter時間軸Timeline的實現(xiàn)

    Flutter時間軸Timeline的實現(xiàn)

    時間軸在很多地方都可以用的到,本文介紹了Flutter時間軸Timeline的實現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • Android滑動沖突問題的解決方法

    Android滑動沖突問題的解決方法

    這篇文章主要為大家詳細介紹了Android滑動沖突問題的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • Android中如何加載數(shù)據(jù)緩存

    Android中如何加載數(shù)據(jù)緩存

    這篇文章主要介紹了Android中如何加載數(shù)據(jù)緩存的相關(guān)資料,需要的朋友可以參考下
    2016-02-02
  • Android inflater 用法及不同點

    Android inflater 用法及不同點

    在 實際開發(fā)中LayoutInflater這個類還是非常有用的,它的作用類似于findViewById()。這篇文章主要介紹了Android inflater 用法,需要的朋友可以參考下
    2018-11-11
  • Android自定義View制作儀表盤界面

    Android自定義View制作儀表盤界面

    這篇文章主要介紹了Android自定義View制作儀表盤界面的相關(guān)資料,首先需要自定義儀表盤的屬性,在構(gòu)造方法種獲取自定義屬性,本文介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下
    2016-11-11
  • Android11文件管理權(quán)限申請詳細介紹

    Android11文件管理權(quán)限申請詳細介紹

    大家好,本篇文章主要講的是Android11文件管理權(quán)限申請詳細介紹,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • android studio廣播機制使用詳解

    android studio廣播機制使用詳解

    這篇文章主要為大家詳細介紹了android studio廣播機制的使用方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08

最新評論