Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android 數據存儲——SharedPreference

Android 數據存儲——SharedPreference

編輯:關於Android編程

作為一個完成的應用程序,數據存儲操作是必不可少的,因此,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對象 三、通過Editor對象存儲key-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() {
			
			@Override
			public 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
下查看文件

data-cke-saved-src=https://www.android5.online/Android/UploadFiles_5356/201702/2017022316071377.png
點擊File Explorer對話框中的右上角第一個按鈕從收據將hello.xml文件導出到電腦中,可查看其內容

data-cke-saved-src=https://www.android5.online/Android/UploadFiles_5356/201702/2017022316071389.png

內容如下

data-cke-saved-src=https://www.android5.online/Android/UploadFiles_5356/201702/2017022316071477.png

程序測試:——點擊TextView,獲取SharedPreference保存的數據

data-cke-saved-src=https://www.android5.online/Android/UploadFiles_5356/201702/2017022316071468.png


 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved