Android Studio 之 SharedPrefences 數據持久性保存

SharedPreferences 會在應用包目錄中生成一個xml文件,將數據保存在裏面java

能夠實現數據持久性保存。android

建立的數據,保存在 Data -> Data -> 包名 -> shared_prefs 文件夾中app

 

 

 

 

實例化接口的時候:ide

1. 不指定文件名,直接保存在 MainActivity.xml 文件中    函數

SharedPreferences shp = getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = shp.edit();
editor.putInt("number",100); //將100保存到 number 這個key中
editor.apply(); //提交:或editor.commit()可是建議用 apply()它是非同步的方式,避免衝突,容許多部件 同時進行讀寫

  

2.指定文件名this

//下面這句直接把這個數值保存到 My_Data.xml 文件中
SharedPreferences shp2 = getSharedPreferences("MY_DATA",Context.MODE_PRIVATE);
SharedPreferences.Editor editor2 = shp2.edit();
editor2.putInt("number2",200); //將200保存到 number2 這個key中
editor2.apply(); //提交:或editor.commit()可是建議用 apply()它是非同步的方式,避免衝突,容許多部件 同時進行讀寫

  

3.讀取內容spa

SharedPreferences shp2 = getSharedPreferences("MY_DATA",Context.MODE_PRIVATE);
int number2 = shp2.getInt("number2",0);//讀取key爲number2的值,若是讀不到默認爲0
Log.d(TAG,String.valueOf(number2));

  

 

1.在 MainActivity中直接操做 Sharedpreferences xml

package com.example.sharedpreferences;

import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

    String TAG = "myTag";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        /*
        * Activity 和 getPreferences 都由於繼承自 Context,因此在這個類中,能夠直接訪問
        *
        * 若是在 其餘類中要訪問 getPreferences,須要在其餘類中傳遞一個Context參數
        * 使這個類具有訪問Activity全局的能力
        * */

        //SharedPreferences 是一個接口
        //這裏參數是一個常量 , 直接保存到 Data 目錄中的 MainActivity.xml 文件中
        SharedPreferences shp = getPreferences(Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = shp.edit();
        editor.putInt("number",100); //將100保存到 number 這個key中
        editor.apply(); //提交:或editor.commit()可是建議用 apply()它是非同步的方式,避免衝突,容許多部件 同時進行讀寫

        //讀取
        int number = shp.getInt("number",0); //讀取key爲number的值,若是讀不到默認爲0
        Log.d(TAG,String.valueOf(number));

        //下面這句直接把這個數值保存到 My_Data.xml 文件中
        SharedPreferences shp2 = getSharedPreferences("MY_DATA",Context.MODE_PRIVATE);
        SharedPreferences.Editor editor2 = shp2.edit();
        editor2.putInt("number2",200); //將200保存到 number2 這個key中
        editor2.apply(); //提交:或editor.commit()可是建議用 apply()它是非同步的方式,避免衝突,容許多部件 同時進行讀寫

        int number2 = shp2.getInt("number2",0);//讀取key爲number2的值,若是讀不到默認爲0
        Log.d(TAG,String.valueOf(number2));




        //從 其餘類中 操做 SharedPreferences
        //構造函數中的參數,//不能直接用this,若是當窗口翻轉,Activity 重建,會致使泄露
        //用全局有效的 getApplicationContext()
        MyDataMng myDataMng = new MyDataMng(getApplicationContext());
        myDataMng.save();
        myDataMng.load();

        Log.d(TAG,"myDataMng->userName=" + myDataMng.userName);
    }
}

  

 

 

2.在其餘類中操做 Sharedpreferences blog

package com.example.sharedpreferences;

import android.content.Context;
import android.content.SharedPreferences;

public class MyDataMng {
    public int number;
    public String userName;
    private Context context;
    //在構造函數中傳進來Context這個參數
    public MyDataMng(Context context){
        this.context = context;
    }
    public void save(){
        //建立文件:myName.xml
        String myName= context.getResources().getString(R.string.MyName);
        SharedPreferences  shp = context.getSharedPreferences(myName,Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = shp.edit();
        //將數據放在 UserName 這個key 中
        String userNameValue = context.getResources().getString(R.string.UserNameValue);
        editor.putString("UserNameValue",userNameValue);
        editor.apply();
    }

    public String load(){
        String myName= context.getResources().getString(R.string.MyName);
        SharedPreferences  shp = context.getSharedPreferences(myName,Context.MODE_PRIVATE);//讀取 myName.xml 這個文件

        //讀取userName 這個節點
        userName = shp.getString("UserNameValue","無名");
        return userName;
    }
}
相關文章
相關標籤/搜索