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

  

Android Studio 之 SharedPrefences 数据持久性保存的更多相关文章

  1. Android 学习笔记之数据存储SharePreferenced+File

    学习内容: Android的数据存储.... 1.使用SharedPreferences来保存和读取数据... 2.使用File中的I/O来完成对数据的存储和读取...   一个应用程序,经常需要与用 ...

  2. 第二章:Android Studio概述(二)[学习Android Studio汉化教程]

    The Main Menu Bar 主菜单栏  主菜单栏位于Android Studio的最上面,你几乎可以利用主菜单和其子菜单来执行任何操作.不像Android Studio中其他的一些菜单,主菜单 ...

  3. Android Studio 之 数据存活【2】,返回桌面切换回来,内容还保存着

    使用ViewMode SavedState来使得ViewModel在系统杀死后台进程的时候得以存活. 本集使用到的库,需要在gradle中添加: implementation 'androidx.li ...

  4. android应用的数据应该保存到哪儿

    王永超王永超嫖娼 做android app开发会涉及到不同数据的保存,比如数据缓存,客户登陆信息保存,客户状态的保存等等. 那针对这不同的数据我们应该保存在什么地方呢? 1.应用卸载也不会删除的数据 ...

  5. Android中突发情况Activity数据的保存和恢复

    Android中突发情况Activity数据的保存和恢复 写在前面:在我们的APP使用的过程中,总有可能出现各种手滑.被压在后台.甚至突然被杀死的情况.所以对APP中一些临时数据或关键持久型数据,就需 ...

  6. Android Studio中获取sha1证书指纹数据的方法

    高德地图开发申请KEY的时候需要开发者提供SHA1证书指纹数据,在eclipse很容易就找到了,但是Android Studio很久也没找到,只能使用在网上看到的方法了,在Android Studio ...

  7. 如何关闭android studio开发环境自动保存

    使用DW习惯了现在转到学习开发android,请问怎样关闭android studio的自动保存功能,然后按ctrl+s进行保存,因为有时候代码不想让其保存,他也自动保存了. File -> S ...

  8. Android中数据的保存

    1. 概述 在Android中有以下几种保存数据方式: 1). 使用sharedPreference去保存:只有应用程序自己可以访问 2). 保存在应用程序私有的文件夹下:只有应用程序自己可以访问 3 ...

  9. Android Studio 之 Navigation【2.数据的传递】

    Android Studio 之 Navigation[2.数据的传递和过渡动画] 在资源navigation资源的xml文件中,在[目标界面] detialFragment中点击,在右边 Argum ...

随机推荐

  1. CSS揭秘-半透明边框与多重边框

    场景一: 实现半透明边框: 由于CSS样式的默认行为,背景色的渲染范围是 content+padding+border. 半透明边框被主调色影响, 实现的效果为   解决方案: 使用backgroun ...

  2. 没有用到React,为什么我需要import引入React?

    没有用到React,为什么我需要import引入React? 本质上来说JSX是React.createElement(component, props, ...children)方法的语法糖. 所以 ...

  3. 修改pyechart生成的HTML内容大小方法

    1.目前安装pyechart后生成的图片默认大小为 width=800, height=400, 如图 2.想修改内容大小:找到C:\python\Lib\site-packages\pyechart ...

  4. linux卸载gitlab

    完全卸载gitlab 1.停止gitlab     # gitlab-ctl stop 2.卸载gitlab(看是gitlab-ce版本还是gitlab-ee版本)     # rpm -e gitl ...

  5. Httpd服务进阶知识-LAMP架构概述

    Httpd服务进阶知识-LAMP架构概述  作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.LAMP架构概述 1>.什么是LAM(M)P架构 L: linux A: apa ...

  6. 发送短信验证码的JAVA代码

    package com.moretickets.platform; import com.alibaba.fastjson.JSONException; import com.alibaba.fast ...

  7. 使用MPU6050陀螺仪自制Arduino数字量角器

    MPU6050惯性单元是一个3轴加速度计和一个3轴陀螺仪组合的单元.它还包含温度传感器和DCM,可执行复杂的任务. MPU6050通常用于制作无人机和其他远程控制机器人,如自平衡机器人.在本篇文章中, ...

  8. js图片转为base64的格式

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. javascript学习3、数据类型、数据类型转换、运算符

    数据类型包括:基本数据类型和引用数据类型 基本数据类型指的是简单的数据段,引用数据类型指的是有多个值构成的对象. 当我们把变量赋值给一个变量时,解析器首先要确认的就是这个值是基本类型值还是引用类型值 ...

  10. oVirt-postgresql

    连接数据库 方法一: cd /opt/rh/rh-postgresql95/root/bin su postgres ./psql \c engine 执行sql语句即可 方法二: 用pgAdmin访 ...