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


  我們在開發中,應用程序會保存少量數據,例如一些字符串、一些標記或者一些配置文件,這時候如果去使用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     <Button
18         android:id="@+id/btn_read"
19         android:layout_width="wrap_content"
20         android:layout_height="wrap_content"
21         android:text="讀取" />
22     
23     <Button
24         android:id="@+id/btn_write"
25         android:layout_width="wrap_content"
26         android:layout_height="wrap_content"
27         android:text="寫入" />
28     
29     <Button
30         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     @Override
16     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             @Override
28             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             @Override
37             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             @Override
48             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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM