zoukankan      html  css  js  c++  java
  • Android Studio SharedPreferences

      Android 中最简单的数据存储方式 : SharedPreferences

    SharedPreferences 数据存储处理实际上时对一个个key——value 数据对的处理

    使用SharedPreferences 保存key-value 对的一般步骤:

    1. 使用Activity 类 的 getSharePreferences方法获取SharePreferences 对象,指定文件名和访问权限

    2.获得SharePreferences.Editor 对象,并调用该对象的putXXX 方法保存key-value 对

    3. 通过SharePreferences.Editor 的commit 方法提交保存 key-value 对

    示例一:

    认识并使用

     1 package com.example.sharedpreferences;
     2 
     3 import androidx.appcompat.app.AppCompatActivity;
     4 
     5 import android.content.Context;
     6 import android.content.SharedPreferences;
     7 import android.os.Bundle;
     8 import android.util.Log;
     9 
    10 
    11 public class MainActivity extends AppCompatActivity {
    12 
    13     @Override
    14     protected void onCreate(Bundle savedInstanceState) {
    15         super.onCreate(savedInstanceState);
    16         setContentView(R.layout.activity_main);
    17 
    18         //SharedPreferences 接口
    19 21         // 一个参数
    22         SharedPreferences shp=getPreferences(Context.MODE_PRIVATE);
    23         SharedPreferences.Editor editor=shp.edit() ;
    24         editor.putInt("NUMBER",100);   // key  -value
    25         //均可 提交
    26         //editor.commit();
    27         //非同步提交
    28         editor.apply();
    29 
    30         int x =shp.getInt("NUMBER",0);
    31         String TAG="mylog";
    32         Log.d(TAG, "onCreate: "+x);
    33 
    34 
    35     }
    36 }

    运行程序之后,找到设备存储位置

     打开 Mainactivity .xml  该文件名为默认的

    会找到命名为 NUMBER 的 int 类型数据 数值为100  

    1 <?xml version='1.0' encoding='utf-8' standalone='yes' ?>
    2 <map>
    3     <int name="NUMBER" value="100" />
    4 </map>

    2.使用 getSharedPreferences  方法

     1 package com.example.sharedpreferences;
     2 
     3 import androidx.appcompat.app.AppCompatActivity;
     4 
     5 import android.content.Context;
     6 import android.content.SharedPreferences;
     7 import android.os.Bundle;
     8 import android.util.Log;
     9 
    10 
    11 public class MainActivity extends AppCompatActivity {
    12 
    13     @Override
    14     protected void onCreate(Bundle savedInstanceState) {
    15         super.onCreate(savedInstanceState);
    16         setContentView(R.layout.activity_main);
    17 
    18         //SharedPreferences 接口
    19         //两个参数
    20         SharedPreferences shp = getSharedPreferences("MY_data",Context.MODE_PRIVATE);
    21         // 一个参数
    22        // SharedPreferences shp=getPreferences(Context.MODE_PRIVATE);
    23         SharedPreferences.Editor editor=shp.edit() ;
    24         editor.putInt("NUMBER",6 00);   // key  -value
    25         //均可 提交
    26         //editor.commit();
    27         //非同步提交
    28         editor.apply();
    29 
    30         int x =shp.getInt("NUMBER",0);
    31         String TAG="mylog";
    32         Log.d(TAG, "onCreate: "+x);
    33 
    34 
    35     }
    36 }

    存储为自定义名称的 xml 文件

    2. 创建一个专门的数据类来管理数据 

    MyData类

     1 package com.example.sharedpreferences;
     2 
     3 import android.content.Context;
     4 import android.content.SharedPreferences;
     5 
     6 public class MyData {
     7 
     8     public  int number;
     9 
    10     private Context context;
    11     public  MyData(Context context){
    12         this.context=context;
    13     }
    14 
    15     public  void  save(){
    16         String name=context.getResources().getString(R.string.MY_data);
    17         SharedPreferences shp= context.getSharedPreferences(name,Context.MODE_PRIVATE);
    18         SharedPreferences.Editor editor=shp.edit();
    19         String key=context.getResources().getString(R.string.MY_KEY);
    20         editor.putInt(key,number);
    21         editor.apply();
    22     };
    23 
    24     public int  load(){   //读取
    25         String name=context.getResources().getString(R.string.MY_data);
    26         SharedPreferences shp= context.getSharedPreferences(name,Context.MODE_PRIVATE);
    27         String key=context.getResources().getString(R.string.MY_KEY);
    28         //defValue :  缺省值
    29         int x=shp.getInt(key,context.getResources().getInteger(R.integer.defValue));
    30         number=x;
    31         return x;
    32 
    33     }
    34 
    35 }

    MainActivity.java

     1 package com.example.sharedpreferences;
     2 
     3 import androidx.appcompat.app.AppCompatActivity;
     4 
     5 import android.content.Context;
     6 import android.content.SharedPreferences;
     7 import android.os.Bundle;
     8 import android.util.Log;
     9 
    10 
    11 public class MainActivity extends AppCompatActivity {
    12 
    13     @Override
    14     protected void onCreate(Bundle savedInstanceState) {
    15         super.onCreate(savedInstanceState);
    16         setContentView(R.layout.activity_main);
    17         // 不好  this 表示 activity 的引用 有可能导致内存泄漏 activity 经常被摧毁重建
    18        //  MyData myData = new MyData(this);
    19         // ApplicationContext() 可以理解为指向app的顶级引用 单个 永远存在的单例
    20         MyData myData = new MyData(getApplicationContext());
    21 
    22         myData.number=1000;
    23         myData.save();
    24         int y=myData.load();
    25         String TAG="mylog";
    26         Log.d(TAG, "onCreate: "+y);
    27 
    28 
    29 
    30         //SharedPreferences 接口
    31         //两个参数
    32       /*  SharedPreferences shp = getSharedPreferences("MY_data",Context.MODE_PRIVATE);
    33         // 一个参数
    34        // SharedPreferences shp=getPreferences(Context.MODE_PRIVATE);
    35         SharedPreferences.Editor editor=shp.edit() ;
    36         editor.putInt("NUMBER",600);   // key  -value
    37         //均可 提交
    38         //editor.commit();
    39         //非同步提交
    40         editor.apply();
    41 
    42         int x =shp.getInt("NUMBER",0);
    43         String TAG="mylog";
    44         Log.d(TAG, "onCreate: "+x);*/
    45 
    46 
    47 
    48 
    49     }
    50 }

    在编写程序当中,将某些变量设置在Resource 的Values 目录当中,便于数据管理,提高程序的可维护性

    string.xml

    <resources>
        <string name="app_name">SharedPreferences</string>
        <string name="MY_data">my_data</string>
        <string name="MY_KEY">my_key</string>
    </resources>

    int.xml

    1 <?xml version="1.0" encoding="utf-8"?>
    2 <resources>
    3     <integer name="defValue">0</integer>
    4 </resources>
  • 相关阅读:
    javascript入门教程笔记
    杭电2025
    杭电 2024
    杭电2019
    UEditor编辑器上传图片开发流程
    js操作textarea方法集合
    ueditor编辑器和at.js集成
    js分页算法
    js获取url中的参数
    第7章函数表达式笔记
  • 原文地址:https://www.cnblogs.com/cxy0210/p/12337321.html
Copyright © 2011-2022 走看看