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