Android Studio 之 SharedPrefences 数据持久性保存

满堂花醉三千客,一剑霜寒十四州。这篇文章主要讲述Android Studio 之 SharedPrefences 数据持久性保存相关的知识,希望能为你提供帮助。
SharedPreferences  会在应用包目录中生成一个xml文件,将数据保存在里面
可以实现数据持久性保存。
【Android Studio 之 SharedPrefences 数据持久性保存】创建的数据,保存在 Data -> Data ->   包名 -> shared_prefs  文件夹中

Android Studio 之 SharedPrefences 数据持久性保存

文章图片

 

 
 
 
实例化接口的时候:
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.指定文件名
//下面这句直接把这个数值保存到 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.读取内容
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 
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 
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); SharedPreferencesshp = context.getSharedPreferences(myName,Context.MODE_PRIVATE); SharedPreferences.Editor editor = shp.edit(); //将数据放在 UserName 这个key 中 String userNameValue = https://www.songbingjia.com/android/context.getResources().getString(R.string.UserNameValue); editor.putString("UserNameValue",userNameValue); editor.apply(); }public String load(){ String myName= context.getResources().getString(R.string.MyName); SharedPreferencesshp = context.getSharedPreferences(myName,Context.MODE_PRIVATE); //读取 myName.xml 这个文件//读取userName 这个节点 userName = shp.getString("UserNameValue","无名"); return userName; } }


 

    推荐阅读