Android 資料存放區——SharedPreference
作為一個完成的應用程式,資料存放區操作是必不可少的,因此,Android系統提供了四種資料儲存方式,分別是:SharedPreference、File、SQLite以及Content Provider。由於Android系統中,資料基本都是私人的,都是存放於data/data/程式包名目錄下,所有要實現資料共用,正確方式使用Content Provider。
SQLite:SQLite是一個輕量級的資料庫,支援基本SQL文法,是常被採用的一種資料存放區方式。Android為此資料庫提供了一個名為SQLiteDatebase的類型,封裝了一些操作資料庫的API。
SharedPreference:除SQLite資料庫外,另一種常用的資料存放區方式,其本質就是一個xml檔案,常用於儲存較簡單的參數設定。
File:即常說的檔案(I/O)儲存方式,常用儲存大量數量的資料,但是缺點是更新資料將是一件困難的事情。
ContentProvider:Android系統中能實現所有應用程式共用的一種資料存放區方式,由於資料通常在各應用間的互相私密的,所有此儲存方式較少使用,但是其又是必不可少的一種儲存方式。例如音頻、視頻、圖片和通訊錄,一般都可以採用此種方式進程儲存。每個ContentProvider都會對外提供一個公用的URI(封裝成Uri對象),如果應用程式有資料需要共用,就需要使用ContentProvider為這些資料定義一個URI,然後其他應用程式就通過Content Provider傳入這個URI來對資料進行操作。
SharedPreference:是一種輕型的資料存放區方式,它的本質是基於XML檔案儲存體key-value索引值對資料,通常用來儲存一些簡單的配置資訊。其儲存位置在data/data/程式包名/shared_prefs目錄下。SharedPreference對象本身只能擷取資料而不支援儲存和修改,儲存修改是通過Editor對象實現。
SharedPreference對象與SQLite資料庫相比,免去了建立資料庫、建立表、寫SQL語句等諸多操作,相對而言更加方便、簡潔。但是SharedPreference也有其自身缺陷,比如其職能儲存boolean、int、float、long和String五種簡單的資料類型,比如其無法進行條件查詢等。所有無論SharedPreference的資料存放區操作是如何簡單,它也只能是儲存方式的一種補充,而無法完全替代如SQLite資料這樣的其他資料存放區方式。
SharedPreference儲存方式操作步驟:
一、根據Context擷取SharedPreference對象
調用Context對象的getSharedPreference()方法,該方法獲得的SharedPreference對象可以被同一個應用程式下的其他組件共用調用Activity對象的getPreference()方法,該方法獲得的SharedPreference對象只能在該Activity中使用 二、利用SharedPreference對象中的edit()方法獲得Editor對象 三、通過EditorObject Storage Servicekey-value索引值對資料 四、通過Editor對象的commit()方法提交資料
SharedPreference的四種操作模式:
Context.MODE_PRIVATE:為預設操作模式,代表該檔案是私人資料,只能被應用程式本身訪問,在該模式下,寫入的內容會覆蓋原檔案的內容
Context.MODE_APPEND:該模式會檢查檔案是否存在,存在就往檔案中追加內容,否則就建立新檔案
Context.MODE_WORLD_READABLE:表示當前檔案可以被其他應用讀取
Context.MODE_WORLD_WRITEABLE:表示當前檔案可以被其他應用寫入
例子:——通過點擊TextView,來擷取SharedPreference儲存的資料
AndroidManifest.xml——沒有做任何修改,建立工程預設
activity_main.xml
MainActivity.java
package com.example.sharedpreferencedemo;import android.os.Bundle;import android.view.View;import android.widget.TextView;import android.app.Activity;import android.content.SharedPreferences;import android.content.SharedPreferences.Editor;public class MainActivity extends Activity {private TextView textView;private SharedPreferences sharedPreferences; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); /*1、擷取SharedPreference對象,此參數一hello指定了儲存的檔案名稱*/ sharedPreferences = getSharedPreferences(hello, MODE_PRIVATE); /*2、存入資料,可以存入多種類型資料,資料通過key索引值標記對應資料*/ Editor editor = sharedPreferences.edit(); editor.putString(string, hello world.); editor.putInt(int, 10); editor.putBoolean(boolean, true); /*3、提交資料*/ editor.commit(); textView = (TextView)this.findViewById(R.id.textView); textView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stub//如果索引值不存在,則返回第二個參數的資料String string = sharedPreferences.getString(string, )++sharedPreferences.getInt(int, 0)++sharedPreferences.getBoolean(boolean, false);textView.setText(string);textView.setTextSize(20);}}); } }
下載程式:
當運行此程式後,資料就儲存在/data/data/com.example.sharedpreferencedemo/shared_prefs/hello.xml檔案中。進入Window->Show View->Other->Androd->File Explorer
下查看檔案
點擊File Explorer對話方塊中的右上方第一個按鈕從收據將hello.xml檔案匯出到電腦中,可查看其內容
內容如下:
程式測試:——點擊TextView,擷取SharedPreference儲存的資料