Android學習筆記(十三)SharedPreference必須掌握的基礎

來源:互聯網
上載者:User

標籤:

  我們在開發中,應用程式會儲存少量資料,例如一些字串、一些標記或者一些設定檔,這時候如果去使用SQLite儲存這些資料的話,難免會顯得大材小用,用起來也不方便,對於這種資訊,儲存在SharedPreferences中在合適不過了。

一、SharedPreferences簡介。

  1、SharedPreferences是一種輕型的儲存方式,它的原理是基於xml檔案儲存體key-value索引值對資料,通常用來儲存一些簡單的配置資訊。儲存位置:/data/data/{包名}/shared_prefs目錄下。SharedPreferences對象本身只能擷取資料而不支援儲存和修改,儲存修改是通過Editor對象實現。

  2、SharedPreferences對象與SQLite資料庫相比,更加的輕量級,不需要建立資料庫,建立表,寫SQL語句等一系列的操作。美中不足的是SharedPreferences只支援一下幾種類型的資料:

  boolean、 int 、float、 long、String

  3、SharedPreferences本身是一個介面,程式無法直接建立它的執行個體,只能通過Context提供的getSharedPreferences(String name, int mode)來擷取它的執行個體,該方法的第二個參數支援如下幾個值:

  · Context.MODE_PRIVATE :只被本地程式讀寫。

  · Context.MODE_WORLD_READABLE :能被其他程式讀。

  · Context.MODE_WORLD_WRITEABLE :能被其他程式讀、寫。

  4、SharedPreferences的常用方法如下:

  · boolean contans(String key) :判斷SharedPreferences中是否包含特定key的資料。

  · abstract Map<String, ?> getAll() :擷取全部的key-value索引值對。

  · boolean getXxx(String key, xxx default) : 擷取指定key對應的值,如果該key不存在,返回default值。

  還有一點就是,它也不支援條件查詢等等,所以儘管SharedPreferences操作起來非常方便,但它也只能作為儲存方式的一種補充,而無法完全替代SQLite資料庫等其他資料存放區方式。

二、Editor簡介

  SharedPreferences本身沒有提供寫入資料的方法,而是通過SharedPreferences的對象調用editor()方法擷取Editor對象來寫入資料。Editor的常用方法如下:

  · clear() :清空SharedPreferences裡所有資料。

  · putXxx(String key, xxx value) :向SharedPreferences中寫入資料。

  · remove(String key) :刪除SharedPreferences中指定key的值。

  · commit() :當Editor編輯完,該方法提交修改。

三、用一個例子來說明SharedPreferences的用法

  下面將以一個簡單的例子來說明SharedPreferences是怎麼來用的。

  1、首先建立一個布局檔案activity_main,同時在布局檔案中放置四個空間,分別是:輸入框、讀取、寫入和清除。讀取代碼如下:

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2     xmlns:tools="http://schemas.android.com/tools" 3     android:layout_width="match_parent" 4     android:layout_height="match_parent" 5     android:orientation="vertical" 6      > 7  8     <EditText 9         android:id="@+id/et_data"10         android:layout_width="wrap_content"11         android:layout_height="wrap_content"12         android:ems="10" >13 14         <requestFocus />15     </EditText>16 17     <Button18         android:id="@+id/btn_read"19         android:layout_width="wrap_content"20         android:layout_height="wrap_content"21         android:text="讀取" />22     23     <Button24         android:id="@+id/btn_write"25         android:layout_width="wrap_content"26         android:layout_height="wrap_content"27         android:text="寫入" />28     29     <Button30         android:id="@+id/btn_clear"31         android:layout_width="wrap_content"32         android:layout_height="wrap_content"33         android:text="清除" />34 35 </LinearLayout>

   布局檔案非常簡單,這裡就不一一分析了。

  2、然後建立MainActivity,並在MainActivity實現對SharedPreferences的寫入、讀取、清楚等相關操作,代碼如下:

 1 /** 2  * MainActivity 3  *  4  * @author liuwei 5  *  6  */ 7 public class MainActivity extends Activity { 8     private SharedPreferences preferences; 9     private Editor editor;10     EditText et_data;11     Button btn_read;12     Button btn_write;13     Button btn_clear;14 15     @Override16     protected void onCreate(Bundle savedInstanceState) {17         super.onCreate(savedInstanceState);18         setContentView(R.layout.activity_main);19         et_data = (EditText) findViewById(R.id.et_data);20         btn_read = (Button) findViewById(R.id.btn_read);21         btn_write = (Button) findViewById(R.id.btn_write);22         btn_clear = (Button) findViewById(R.id.btn_clear);23         preferences = getPreferences(Activity.MODE_PRIVATE);24         editor = preferences.edit();25         btn_read.setOnClickListener(new OnClickListener() {26 27             @Override28             public void onClick(View v) {29                 String str = preferences.getString("key", "沒有該資料");30                 Toast.makeText(getApplicationContext(), str, Toast.LENGTH_SHORT)31                         .show();32             }33         });34         btn_write.setOnClickListener(new OnClickListener() {35 36             @Override37             public void onClick(View v) {38                 editor.putString("key", et_data.getText().toString());39                 if (editor.commit()) {40                     Toast.makeText(getApplicationContext(), "寫入成功",41                             Toast.LENGTH_SHORT).show();42                 }43             }44         });45         btn_clear.setOnClickListener(new OnClickListener() {46 47             @Override48             public void onClick(View v) {49                 editor.clear();50                 if (editor.commit()) {51                     Toast.makeText(getApplicationContext(), "清除成功",52                             Toast.LENGTH_SHORT).show();53                 }54 55             }56         });57     }58 }

  程式碼分析:

  (1)代碼中首先建立了SharedPreferences和Editor的對象,並在onCreate()方法中對它們作了初始化操作。

  (2)通過editor.putString()方法是下了寫入資料,資料時以索引值對的形式寫入的。

  (3)通過SharedPreferences對象的getString(key, default)方法,即可擷取對應key的值,這裡的第二個參數default為在沒有key對應的資料時的預設值,可由我們自行賦值。

  (4)最後可以可通過editor.clear()方法,對SharedPreferences進行清空操作。

  註:對Editor對象的操作,操作完後需要執行commit方法。同時editor.commit()方法會返回一個boolean值,執行成功返回true,執行失敗返回false。

   

  本文連結:http://www.cnblogs.com/codingblock/p/4887436.html

  聲明:本文歡迎任何形式的轉載,但請務必保留本文連結,謝謝!

Android學習筆記(十三)SharedPreference必須掌握的基礎

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.