• 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时, 数据被读出来,并打印出日志:

  • 相关阅读:
    DRF项目之视图获取路径参数
    DRF项目之层级关系
    DRF项目之序列化器和视图重写方法的区别
    DRF项目之自定义分页器
    DRF项目之实现用户密码加密保存
    DRF项目之通过业务逻辑选择数据集和序列化器
    DRF项目之自定义JWT认证响应数据
    PIP一次性导入所有环境和指定镜像源
    DRF项目之JWT认证方式的简介及使用
    DRF项目之解决浏览器同源策略问题
  • 原文地址:https://www.cnblogs.com/leavescy/p/9671744.html
Copyright © 2020-2023  润新知