Android 資料存放區——SharedPreference

來源:互聯網
上載者:User

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儲存的資料


 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.