SharedPreferences 存储数据

Sharedpreference是一个轻量级的以kv形式存储的数据结构。存储文件以xml的形式存在,位置位于安装目录/shared_prefs/

1.获取默认的Sharedpreference
android 29 之前我们可以通过getDefaultSharedPreferences获取

PreferenceManager.getDefaultSharedPreferences

通过源码发现其内部是通过getSharedPreferences实现的,名称是getDefaultSharedPreferencesName即Package.name + “_preferences”

public static SharedPreferences getDefaultSharedPreferences(Context context) {
        return context.getSharedPreferences(getDefaultSharedPreferencesName(context),
                getDefaultSharedPreferencesMode());
    }

public static String getDefaultSharedPreferencesName(Context context) {
        return context.getPackageName() + "_preferences";
    }

private static int getDefaultSharedPreferencesMode() {
        return Context.MODE_PRIVATE;
    }

其存储位置:安装目录/shared_prefs/com.example.qwe_preferences.xml

android 29因为废弃了PreferenceManager,所以只能通过context.getSharedPreferences来获取,由于上面我们已经分析了,默认的Sharedpreference文件名称为:Package.name + “_preferences”,

获取默认的SharedPreferences

getSharedPreferences(getPackageName() + "_preferences",0);

2.getSharedPreferences 函数

//@param name:存储文件名称,eg:name="xxx"
//@param mode:读取模式
//MODE_PRIVATE=0x0000,只允许程序内部读写
//MODE_WORLD_READABLE= 0x0001:允许外包程序读
//MODE_WORLD_WRITEABLE = 0x0002:允许外部程序写
 public SharedPreferences getSharedPreferences(String name, int mode)

3.SharedPreferences 存取
eg:写入一个String

SharedPreferences perfence = getSharedPreferences("test_preference",0);
SharedPreferences.Editor edit = perfence.edit();
edit.putString("test","123");
edit.commit();

eg:读取所有的存储kv

SharedPreferences perfence = getSharedPreferences("test_preference",0);
Map<String, ?> map = perfence.getAll();

eg:读取指定key的value

SharedPreferences perfence = getSharedPreferences("test_preference",0);
String val = perfence.getString("default","");

4.SharedPreferences.Editor的commit和apply的区别

1.commit: 同步的提交到硬件磁盘
2.apply:将修改数据原子提交到内存, 而后异步真正提交到硬件磁盘。不保证文件100%落地
3.因为apply只提交到内存,所以效率高于commit
4.apply没有返回值,commit返回boolean表明修改是否提交成功

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值