• Android Studio 之 SharedPrefences 数据持久性保存


    SharedPreferences 会在应用包目录中生成一个xml文件,将数据保存在里面

    可以实现数据持久性保存。

    创建的数据,保存在 Data -> Data -> 包名 -> shared_prefs 文件夹中

    实例化接口的时候:

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

      

  • 相关阅读:
    配置文件管理
    Nacos学习
    dockerCompose学习
    Dockerfile
    vue生命周期
    github使用
    推荐系统
    js笔记17
    js笔记16
    js笔记15
  • 原文地址:https://www.cnblogs.com/gfwei/p/11781050.html
Copyright © 2020-2023  润新知