• SharedPreferences存储


    文章目录


    前言

    听说SharedPreferences存储技术快过时了,不过如果是单纯的使用的话,不费什么时间成本。

    本文的Demo摘录自《第一行代码》。


    一.什么是SharedPreferences

    SharedPreferences,一种通过使用键值对的方式来存储数据的技术。

    二.关于SharedPreferences的相关操作

    1.SharedPreferences的数据存储操作

    首先,要想使用SharedPreferences存储数据,就要获取SharedPreferences对象,Android主要提供了两种方法。

    1.1 Context类中的getSharedPreferences方法

    此方法有两个参数,第一个参数用于指定SharedPreferences文件的名称,如果指定文件不存在就会创建一个;第二个参数用于指定操作模式,目前只有默认的Context.MODE_PRIVATE,它和直接传入0的效果是相同的???(使用Ctrl+B跟进可证实)

     

     1.2 Activity类中的getPreferences()方法

    此方法和getSharedPreferences差不多……

    得到SharedPreferences对象之后,就开始向SharedPreferences文件中存储数据,主要分为3步实现。

    (1)调用SharedPreferences对象的edit()方法获取一个SharedPreferences.Editor 对象

    (2)向SharedPreferences.Editor 对象添加数据。

    (3)调用apply()方法将添加的数据提交,从而完成数据存储操作。

    1. //通过getSharedPreferences获取SharedPreferences对象,第一个参数为生成的配置文件名, 第二参数为操作模式
    2. SharedPreferences sharedPreferences= getSharedPreferences("data", Context.MODE_PRIVATE);
    3. SharedPreferences.Editor editor=sharedPreferences.edit();//
    4. editor.putString("name","Tom");
    5. // editor.putInt("age",28);
    6. editor.putBoolean("married",false);
    7. editor.apply();

     

     2.SharedPreferences的数据读取操作

    读取是通过调用SharedPreferences对象的get方法得到,这些get方法接受两个参数,一个参数是键,传入相应的键会得到相应的值,那第二个参数是干嘛用的呢,它表示传入的键的找不到对应的值时会以默认值方法。

    1. SharedPreferences prefs= getSharedPreferences("data", Context.MODE_PRIVATE);
    2. String name=prefs.getString("name","");
    3. int age= prefs.getInt("age",10);
    4. Boolean married=prefs.getBoolean("married",false);
    5. Log.d("MainActivity","name is "+name);
    6. Log.d("MainActivity","age is "+age);
    7. Log.d("MainActivity","married is "+married);

     

     

     完整代码:

    1. "1.0" encoding="utf-8"?>
    2. <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    3. xmlns:app="http://schemas.android.com/apk/res-auto"
    4. xmlns:tools="http://schemas.android.com/tools"
    5. android:layout_width="match_parent"
    6. android:layout_height="match_parent"
    7. tools:context=".MainActivity">
    8. <Button
    9. android:id="@+id/saveButton"
    10. android:layout_width="wrap_content"
    11. android:layout_height="wrap_content"
    12. android:text="save data"
    13. app:layout_constraintBottom_toBottomOf="parent"
    14. app:layout_constraintEnd_toEndOf="parent"
    15. app:layout_constraintStart_toStartOf="parent"
    16. app:layout_constraintTop_toTopOf="parent" />
    17. <Button
    18. android:id="@+id/restoreButton"
    19. android:layout_width="wrap_content"
    20. android:layout_height="wrap_content"
    21. android:layout_marginBottom="236dp"
    22. android:text="restore data"
    23. app:layout_constraintBottom_toBottomOf="parent"
    24. app:layout_constraintEnd_toEndOf="parent"
    25. app:layout_constraintStart_toStartOf="parent" />
    26. androidx.constraintlayout.widget.ConstraintLayout>

     

    1. import androidx.appcompat.app.AppCompatActivity;
    2. import android.content.Context;
    3. import android.content.SharedPreferences;
    4. import android.os.Bundle;
    5. import android.util.Log;
    6. import android.view.View;
    7. import android.widget.Button;
    8. public class MainActivity extends AppCompatActivity {
    9. @Override
    10. protected void onCreate(Bundle savedInstanceState) {
    11. super.onCreate(savedInstanceState);
    12. setContentView(R.layout.activity_main);
    13. Button saveButton=findViewById(R.id.saveButton);
    14. Button restoreButton=findViewById(R.id.restoreButton);
    15. saveButton.setOnClickListener(new View.OnClickListener() {
    16. @Override
    17. public void onClick(View view) {
    18. //通过getSharedPreferences获取SharedPreferences对象
    19. SharedPreferences sharedPreferences= getSharedPreferences("data", Context.MODE_PRIVATE);
    20. SharedPreferences.Editor editor=sharedPreferences.edit();
    21. editor.putString("name","Tom");
    22. // editor.putInt("age",28);
    23. editor.putBoolean("married",false);
    24. editor.apply();
    25. }
    26. });
    27. restoreButton.setOnClickListener(new View.OnClickListener() {
    28. @Override
    29. public void onClick(View view) {
    30. SharedPreferences prefs= getSharedPreferences("data", Context.MODE_PRIVATE);
    31. String name=prefs.getString("name","");
    32. int age= prefs.getInt("age",10);
    33. Boolean married=prefs.getBoolean("married",false);
    34. Log.d("MainActivity","name is "+name);
    35. Log.d("MainActivity","age is "+age);
    36. Log.d("MainActivity","married is "+married);
    37. }
    38. });
    39. }
    40. }

    总结

  • 相关阅读:
    HMM模型
    从零开始的Django框架入门到实战教程(内含实战实例) - 09 初试Ajax之任务界面(学习笔记)
    图像的数据类型
    MySQL的排序和分页
    Scala技术与架构-1
    六年三次架构迭代,OceanBase 单机分布式一体化会是大势所趋吗?
    【excel技巧】单元格内的公式如何隐藏?
    Python -- I/O编程
    VScode 右键没有转到定义等的菜单
    【vite】vite.defineConfig is not a function/npm无法安装第三方包问题
  • 原文地址:https://blog.csdn.net/qq_58259539/article/details/127906840