java|Android SharedPreferences的使用案例
【java|Android SharedPreferences的使用案例】
案例一:在主活动中直接使用:
package com.example.mytests.activities;
import com.example.mytests.R;
import com.example.mytests.viewModels.MyData;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;
public class SharePreferenceTest extends AppCompatActivity {@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_share_preference_test);
//SharedPreferences data=https://www.it610.com/article/getPreferences(MODE_PRIVATE);
//未命名的方式,会对应生成相应activity的xml文件,为该活动所单独使用
SharedPreferences data=getSharedPreferences("Mydata",MODE_PRIVATE);
//方式二,带名字的存储,会对应生成该名字的xml存储文件
SharedPreferences.Editor editor=data.edit();
//使用时申请一个编辑器
editor.putString("hello","你好哇");
//通过editor.put来写入数据
editor.apply();
//操作完毕后记得editor.apply()应用数据操作String str=data.getString("hello","none");
//通过sharePreferences对象.get来获取存储的值
Log.d("输出:", "onCreate: "+str);
}
}
运行后存储可通过根目录/data/data/对应包名/share_prefs访问到:
文章图片
可以看到生成了对应名字的文件;
文章图片
点开发现已写入。
案例二:在外部引入,正规的写法:
创建你的MyData类,构造函数传入context
package com.example.mytests.viewModels;
import com.example.mytests.R;
import android.content.Context;
import android.content.SharedPreferences;
import android.util.Log;
public class MyData {
private Context mContext;
private SharedPreferences mData;
private SharedPreferences.Editor mEditor;
public MyData(Context context) {
mContext=context;
}public void save(String str){
String name=mContext.getResources().getString(R.string.My_data);
mData=https://www.it610.com/article/mContext.getSharedPreferences(name,Context.MODE_PRIVATE);
mEditor=mData.edit();
mEditor.putString(mContext.getResources().getString(R.string.string_name),str);
mEditor.apply();
}public void load(){
String str=mData.getString(mContext.getResources().getString(R.string.string_name),"none");
Log.d("输出", "load: "+str);
}}
在你对应的活动中实例化:
这里传入context时需注意不能用this,必要的是getApplicationContext()全局变量,以防数据泄露,因为传入this时,在活动生命周期结束时,该data对象可能还存在。
package com.example.mytests.activities;
import com.example.mytests.R;
import com.example.mytests.viewModels.MyData;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class SharePreferenceTest extends AppCompatActivity {@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_share_preference_test);
MyData data=https://www.it610.com/article/new MyData(getApplicationContext());
//这里不能用this,会造成数据的泄漏,应使用顶级全局变量getApplicatioinContext
data.save("1000");
data.load();
}
}
此外,涉及的修改操作可通过editor.put...(...).commit()来提交修改,
清除操作可通过editor.clear().commit()清空。
删除操作可通过editor.remove(键名).commit()删除某个数据。
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- android第三方框架(五)ButterKnife
- Android中的AES加密-下
- 事件代理
- 带有Hilt的Android上的依赖注入
- Java|Java OpenCV图像处理之SIFT角点检测详解
- java中如何实现重建二叉树
- 数组常用方法一
- android|android studio中ndk的使用
- 【Hadoop踩雷】Mac下安装Hadoop3以及Java版本问题