• 20.Android开发笔记:持久化(二):SharedPreferences存储


    2.SharedPreferences存储

    SharedPreferences是使用键值对的方式来存储数据的。
    也就是说,当保存一条数据的时候,需要给这条数据提供一个对应的键,这样在读取数据的时候就可以通过这个键把相应的值取出来。
    而且SharedPreferences还支持多种不同的数据类型存储,
    如果存储的数据类型是整型,那么读取出来的数据也是整型的;
    如果存储的数据是一个字符串,那么读取出来的数据仍然是字符串。

    SharedPreferences文件都是存放在 /data/data/<package name>/shared_prefs/ 目录下的。

    2.1 获取SharedPreferences有3个方法

    • context类中的getSharedPrefences()方法
      此方法接收两个参数,第一个参数用于指定SharedPreferences文件的名称,如果指定的文件不存在则会创建一个,SharedPreferences文件都是存放在/data/data//shared_prefs/目录下的。第二个参数用于指定操作模式,目前只有MODE_PRIVATE这一种模式可选,它是默认的操作模式,和直接传入0效果是相同的,表示只有当前的应用程序才可以对这个SharedPreferences文件进行读写。其他几种操作模式均已被废弃

    • Activity类中的getSharedPrefences()方法
      这个方法和Context中的getSharedPreferences()方法很相似,不过它只接收一个操作模式参数,因为使用这个方法时会自动将当前活动的类名作为SharedPreferences的文件名。

    • PreferenceManager类中的getSharedPrefences()方法 (已废弃)
      这是一个静态方法,它接收一个Context参数,并自动使用当前应用程序的包名作为前缀来命名SharedPreferences文件。得到了SharedPreferences对象之后,

    2.2 SharedPreferences文件中存储数据

    开始向SharedPreferences文件中存储数据了,主要可以分为3步实现。

    • (1) 调用 SharedPreferences 对象的 edit()方法来获取一个SharedPreferences.Editor 对象。
    • (2) 向 SharedPreferences.Editor对象中添加数据,比如添加一个布尔型数据就使用putBoolean()方法,添加一个字符串则使用putString()方法,以此类推。
    • (3) 调用 apply()方法将添加的数据提交,从而完成数据存储操作。
    
            Button btn_save = findViewById(R.id.btn_save);
            btn_save.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
    
                    SharedPreferences sharedPreferences = getSharedPreferences("my_shared_pres", MODE_PRIVATE);
                    SharedPreferences.Editor editor = sharedPreferences.edit();
                    editor.putString("name", "Kevin");
                    editor.putInt("age",29);
                    editor.putBoolean("married", false);
                    editor.apply();
                }
            });
        }
    
    

    进入/data/data/com.example.sharedpreferencestest/shared_prefs/目录下,可以看到生成了一个my_shared_pres.xml`文件,

    
    <?xml version='1.0' encoding='utf-8' standalone='yes' ?> 
    <map> 
      <boolean name="married" value="false" /> 
      <string name="name">Kevin</string> 
      <int name="age" value="29" /> 
    </map>
    
    

    执行修改 editor.putInt("age",28); 后:

    <?xml version='1.0' encoding='utf-8' standalone='yes' ?> 
    <map> 
      <boolean name="married" value="false" /> 
      <string name="name">Kevin</string> 
      <int name="age" value="28" /> 
    </map>
    
    

    2.3 从SharedPreferences文件中读取数据

            Button btn_restore = findViewById(R.id.btn_restore);
            btn_restore.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    SharedPreferences sharedPreferences = getSharedPreferences("my_shared_pres", MODE_PRIVATE);
                    String name = sharedPreferences.getString("name", "");
                    int age = sharedPreferences.getInt("age",0);
                    boolean married = sharedPreferences.getBoolean("married", false);
    
                    Toast.makeText(MainActivity.this,
                            "name:" +name +"age:" + age + "married:" + String.valueOf(married),
                            Toast.LENGTH_SHORT )
                            .show();
    
                }
            });
    
  • 相关阅读:
    日期验证正则表达式
    删除数据表中重复的记录
    转:精选15个国外CSS框架
    WEB打印大全(转)
    document.execCommand()方法使用的语法
    Jquery 1000 demo
    完成 ajax.net 的cross domain ajax功能实现
    "方案改进:直接通过User Control生成HTML", 我的改进意见
    实现Mashup的基本技术手段: cross domain ajax
    你还在用GUID作数据库表的主键吗?
  • 原文地址:https://www.cnblogs.com/easy5weikai/p/12535627.html
Copyright © 2020-2023  润新知