Android Studio 之 SharedPrefences 数据持久性保存
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 数据持久性保存的更多相关文章
- Android 学习笔记之数据存储SharePreferenced+File
学习内容: Android的数据存储.... 1.使用SharedPreferences来保存和读取数据... 2.使用File中的I/O来完成对数据的存储和读取... 一个应用程序,经常需要与用 ...
- 第二章:Android Studio概述(二)[学习Android Studio汉化教程]
The Main Menu Bar 主菜单栏 主菜单栏位于Android Studio的最上面,你几乎可以利用主菜单和其子菜单来执行任何操作.不像Android Studio中其他的一些菜单,主菜单 ...
- Android Studio 之 数据存活【2】,返回桌面切换回来,内容还保存着
使用ViewMode SavedState来使得ViewModel在系统杀死后台进程的时候得以存活. 本集使用到的库,需要在gradle中添加: implementation 'androidx.li ...
- android应用的数据应该保存到哪儿
王永超王永超嫖娼 做android app开发会涉及到不同数据的保存,比如数据缓存,客户登陆信息保存,客户状态的保存等等. 那针对这不同的数据我们应该保存在什么地方呢? 1.应用卸载也不会删除的数据 ...
- Android中突发情况Activity数据的保存和恢复
Android中突发情况Activity数据的保存和恢复 写在前面:在我们的APP使用的过程中,总有可能出现各种手滑.被压在后台.甚至突然被杀死的情况.所以对APP中一些临时数据或关键持久型数据,就需 ...
- Android Studio中获取sha1证书指纹数据的方法
高德地图开发申请KEY的时候需要开发者提供SHA1证书指纹数据,在eclipse很容易就找到了,但是Android Studio很久也没找到,只能使用在网上看到的方法了,在Android Studio ...
- 如何关闭android studio开发环境自动保存
使用DW习惯了现在转到学习开发android,请问怎样关闭android studio的自动保存功能,然后按ctrl+s进行保存,因为有时候代码不想让其保存,他也自动保存了. File -> S ...
- Android中数据的保存
1. 概述 在Android中有以下几种保存数据方式: 1). 使用sharedPreference去保存:只有应用程序自己可以访问 2). 保存在应用程序私有的文件夹下:只有应用程序自己可以访问 3 ...
- Android Studio 之 Navigation【2.数据的传递】
Android Studio 之 Navigation[2.数据的传递和过渡动画] 在资源navigation资源的xml文件中,在[目标界面] detialFragment中点击,在右边 Argum ...
随机推荐
- 编写可维护的JavaScript-随笔(四)
避免使用全局变量 一.全局变量带来的问题 a) 命名冲突 i. 当全局变量和全局函数越来越多时,发生命名冲突的概率也随之增高 ii. 如果函数中使用了外部 ...
- JavaScript 事件(基础)
一.事件 事件:触发-响应机制. 二.事件三要素 1.事件源:触发事件的元素 2.事件名称:发送了什么方式的事件 3.事件处理程序:事件触发后要执行的代码(函数形式) 三.事件的使用方式 1.获取元素 ...
- vm-install 模版创建虚拟机
主要用到的信息有:模版id和存储id 通过存储名字 # xe vm-install template=[template_uuid] new-name-label="name" s ...
- Python 关于列表字典的键值修改
list (修改列表的索引值) 循环一个列表时,最好不要对原列表有改变大小的操作,这样会影响你的最终结果. #使用负索引进行修改列表 print('First') lis = [11, 22, 33, ...
- The 2016 ACM-ICPC Asia China-Final D. Ice Cream Tower 二分 + 贪心
题目大意: 对于给出的n个冰激凌球的大小,满足下面的球的大小是上一个的至少2倍,对于给出的k(由k的冰激凌球才能算作一个冰激凌塔),问n个冰激凌球可以最多堆出多少个高度为k的冰激凌塔 题目分析: 对于 ...
- Bag of Tricks for Image Classification with Convolutional Neural Networks笔记
以下内容摘自<Bag of Tricks for Image Classification with Convolutional Neural Networks>. 1 高效训练 1.1 ...
- python正则表达式(6)--split、sub、escape方法
1.re.split 语法: re.split(pattern, string[, maxsplit=0, flags=0]) 参数: pattern 匹配的正则表达式 string ...
- vue-cli配置移动端自适应flexible.js
第一部分:项目中引入lib-flexible 一.项目中安装lib-flexible npm install lib-flexible --save-dev 二.在项目入口文件main.js中引入li ...
- 前端模板引擎artTemplate.js
. 关于artTemplate模板引擎的详细原理请移步高性能JavaScript模板引擎原理解析,本文只探讨如何使用.初学前端的人一般对于绑定数据都是使用原生js或者jquery来拼接字符串,此为ha ...
- 用BlockBoundQueue和c++11实现多线程生产者消费者问题
// file : blockBoundQueue.h #ifndef YANG_BLOCKBOUNDQUEUE #define YANG_BLOCKBOUNDQUEUE #include <m ...