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; } }