android SharedPreferences 淺析


1. 介紹:SharedPreferences 的作用是使用鍵值對的方式存儲數據。且支持多種不同的數據類型存儲;

    Android數據持久化方法中最簡單的一種,即使用Preferences的鍵值對存儲方式。這種方式主要用來存儲比較簡單的一些數據, 而且是標准的Boolean、Int、Float、Long、String等類型。

 android.content.SharedPreferences是一個接口,用來獲取和修改持久化存儲的數據。

     有三種獲取系統中保存的持久化數據的方式:

     a).this.getPreferences (int mode)

     通過Activity對象獲取,獲取的是本Activity私有的Preference,保存在系統中的xml形式的文件的名稱為這個Activity的名字,因此一個Activity只能有一個,屬於這個Activity。

     b).this.getSharedPreferences (String name, int mode)

    因為Activity繼承了ContextWrapper,因此也是通過Activity對象獲取,但是屬於整個應用程序,可以有多個,以第一參數的name為文件名保存在系統中。

     c).PreferenceManager.getDefaultSharedPreferences(this);

    PreferenceManager的靜態函數,保存PreferenceActivity中的設置,屬於整個應用程序,但是只有一個,Android會根據包名和PreferenceActivity的布局文件來起一個名字保存。

    安卓中主要使用了三種方法用於得到SharePreferences對象。本結主要介紹conext類中的getSharedPreferences()方法。

2. 獲取到SharedPreferences對象后,就可以向文件中寫數據,或者從中讀數據;主要分為三步實現:

     a) 調用SharedPreferences對象的edit()方法來獲取一個SharePreferences.Editor對象。

     b) 向SharePreferences.Editor對象中添加數據,比如添加一個string類型,就使用putString()方法;

     c) 調用commit()方法將添加的數據提交,從而完成數據的存儲操作。

3. 下面舉例說明數據的存儲於讀取。

    定義了兩個button, 一個用於觸發存儲數據, 一個用戶觸發讀數據;

package com.exmple.xxx.sharepreferencestest;

import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    private Button button;

    private Button restoreBtn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button = findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                SharedPreferences.Editor editor = getSharedPreferences("testData", MODE_PRIVATE).edit();
                editor.putString("name", "leavescy");
                editor.putInt("age", 24);
                editor.putBoolean("married", false);
                editor.commit();
            }
        });

        restoreBtn = findViewById(R.id.restoreBtn);
        restoreBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                SharedPreferences pref = getSharedPreferences("testData", MODE_PRIVATE);
                String name = pref.getString("name", "");
                int age = pref.getInt("age", 0);
                boolean married = pref.getBoolean("married", false);
                Log.i("MainActivity", "name is " + name);
                Log.i("MainActivity", "age is " + age);
                Log.i("MainActivity", "married is " + married);

            }
        });
    }
}

 

  在點擊SAVE DATA button后, 會將數據存儲到

  打開testData, 數據為:

  此時發現存儲的數據確實是以鍵值對的方式存儲了,且存儲為xml格式;

 

   點擊Restore Data button時, 數據被讀出來,並打印出日志:

 


免責聲明!

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



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