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

  

最新文章

  1. 常用js代码集
  2. VS2013设置护眼背景颜色
  3. thinkphp验证码
  4. android滚动公告栏
  5. Couchbase的安装步骤
  6. python执行linux shell管道输出内容
  7. JNI的某些数组和字符串类型转换
  8. Hello WPF!
  9. jQuery右键菜单ContextMenu使用笔记
  10. Frogs' Neighborhood
  11. 解决升级windows8.1 Oracle服务被刷新
  12. Android(java)学习笔记228:服务(service)之绑定服务调用服务里面的方法
  13. 探讨C++ 变量生命周期、栈分配方式、类内存布局、Debug和Release程序的区别
  14. 分享一个jsonp劫持造成的新浪某社区CSRF蠕虫
  15. 【c# 数据库】 多表链接
  16. Is there a TRY CATCH command in Bash
  17. Node.js学习笔记(八) --- Node.js的路由模块封装
  18. windows phone 8.0 app 移植到windows10 app笔记
  19. 使用jquery操作session方法分享
  20. sqlite 二进制字段 (zz)

热门文章

  1. javascript原型深入解析1-prototype 和原型链、js面向对象
  2. 【开发笔记】- 在Grails下查看打印真实的SQL
  3. css3做ipone当时的滑动解锁闪亮条
  4. Tomcat 8.5版本文件上传后无权限访问的问题
  5. Linux基础:时间同步工具Chrony
  6. MySQL Execution Plan--将范围扫描转换为等值查询
  7. java(包括springboot)读取resources下文件方式
  8. 程序员式优雅表白,教你用python代码画爱心
  9. XSS简单练习
  10. 拖拽插件SortableJS