Android數據存儲(1):SharedPreferences

  Android系統提供了5種方式用來存儲應用數據(application data),它們分別是SharedPreferences(共享參數),Internal Storage(內部存儲),External Storage(外部存儲),SQLite Databases(數據庫存儲),Network Connection(網絡存儲),能夠根據不一樣的情景使用相應的存儲方式。數據庫

 

  下圖是從Android 5.0 官方文檔的Data Storage的部分截圖:服務器

    

  從上圖可知SharedPreferences主要以鍵值對的形式存儲私有數據Internam Storage主要是在手機的內存存儲私有數據External Storage主要是在手機的擴展卡(SD卡、存儲卡)存儲公共數據,而SQLite Databases則是將具備數據結構的數據存儲到私有的數據庫中,同時NetWork Connection則是存儲數據到本身的服務器上。網絡

  

  SharedPreferences 又名共享參數,它是一個輕量級的存儲類,適用於存儲少許的軟件配置參數信息,它是以XML文件的形式存儲數據,其中該文件保存在/data/data/包名/shared_pref目錄下。數據結構

  查閱官方文檔,知ShredPreferences:app

  

  根據以上可知 SharedPreferences是一個接口,它是使用單例模式建立對象,也就是在任什麼時候刻,在內存中都只有一個SharedPreferences對象。spa

 

  SharedPreferences是一個接口,它的內部定義了兩個公共的內部接口:3d

  

    

  SharedPreferences定義的方法:xml

  

 

  SharedPreferences類的總體定義:對象

  

 

  根據以上總結:blog

  1.獲取SharedPreferences對象:

    1)context.getSharedPreferences(String name,int mode)  返回一個SharedPreferences對象,能夠被同一應用程序下的其餘組件共享

     eg:  SharedPreferences sp = getSharedPreferences("shared_pref",MODE_PRIVATE);

     name 爲SharedPreferences保存的數據所在的文件名稱,沒有後綴,而Mode爲存儲的模式,主要有四種:

     

     可知Mode的值有四個(API 17),分別爲:

      MODE_PRIVATE:私有

      MODE_APPED:追加

      MODE_ENABLE_WRITE_AHEAD_LOGGING:

      MODE_MULTI_PROCESS:

      其中MODE_WORLD_READABLE(全局讀)和MODE_WORLD_WRITEABLE(全局寫)已通過時了。

    2)activity.getPreferences(int mode)  返回一個SharedPreferences對象,得到的對象只能在該activity中使用,其中保存的數據的文件名自動命名爲該activity的name,例如MainActivity.xml

      

  2.從SharedPreferences中保存數據和取數據。

    其中取數據能夠直接使用sharedPreferences對象的getXXX()方法,如getInt(),getLong(),getString()等,參數爲鍵值對的鍵.

    保存數據則是先獲取SharedPreferences的內部類Editor對象,這是一個編輯對象,而後使用 putXXX()方法,如putInt(),putLong(),putString()等,參數分別爲鍵值對的鍵和值,最後須要注意的是數據必須使用commit()或apply方法,才能成功保存。

  eg:

    SharedPreferences sp = getSharedPreferences("shared_pref",MODE_PRIVATE);

    SharedPreferences.Editor editor = sp.editor();

    editor.putString("name","Tom");

    editor.putInt("age",13);

    editor.commit();

    ----------------------------------------------------------------------------------------

    String name = sp.getString("name",null);

    int age = sp.getInt("age",-1);

 

  未完,待續。

相關文章
相關標籤/搜索