Android学习笔记——sharedPreference

本文介绍了Android中SharedPreference的使用,包括如何获取SharedPreference、读取与写入数据的操作模式,以及apply()和commit()的区别。SharedPreference适用于存储轻量级数据,如音量、背景颜色等,数据以key-value形式存储于XML文件中。

Android学习笔记——SharedPreference

SharedPreference是android上的一种简单的数据存储技术,他采用key-value的存储类型,通常用来存储一些轻量级的数据,如用户上一次设置的音乐音量,上一次设置的背景颜色等等。SharedPreference讲数据存储到一个xml文件中,并存储到应用程序的私有文件夹里。

  • 获取SharedPreference
  • 具体使用方法

1.获取SharedPreference

获取SharedPreference有两种方式:
- 调用Context对象的getSharedPreferences()方法,该方法获取到的对象可以在应用程序的各个组建中使用。
- 调用Activity 对象的getPreferences()方法,该方法获取到的对象仅可以用在当前的Activity中。

2.具体使用方法

读取SharedPreference

SharedPreference sharedPreference = getSharedPreferences("name",Activity.MODE_PRIVATE);
volume = sharedPreference.getInt("volume",0);

第一行getSharedPreferences方法共有两个参数,第一个参数是存取的sharedPreference的名称,第二个参数是SharedPreference的操作模式。

SharedPreference的操作模式共有四种:

  • Context.MODE_PRIVATE 代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容
  • Context.MODE_APPEND 模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件
  • Context.MODE_WORLD_READABLE 模式表示当前文件可以被其他应用读取
  • Context.MODE_WORLD_WRITEABLE 模式表示当前文件可以被其他应用写入

第二行则是将int变量volume从sharedPreference中,通过标签“volume”读取出来。如果sharedPreference中没有存储volume的值,则给volume赋默认值0.

sharedPreference可以读取的类型有int, float , boolean , String , Long , StringSet。使用方法为

sharedPreference.getBoolean("volume",false);
sharedPreference.getFloat("volume",1.0);
sharedPreference.getString("volume","string");
....

还有一种方法是

sharedPreference.getAll()

得到的是名称与值对应的Map。

写入SharedPreference

SharedPreferences sharedPreferences = getActivity().getSharedPreferences("name", Activity.MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putInt("volume", volume);

    editor.apply();

第一句和读取一样,都是获取sharedPreference。此处不做赘述。
第二行通过sharedPreferences.editor方法得到了一个editor对象,用于往sharedPreference中写入内容。
第三行将int值volume存入了shared preference内,并添加标签”volume”方便查找。
第四行editor.apply()表示提交数据。

值得注意的是shared preference的提交数据的方法常用的有两种,一种是editor.apply(),另一种是editor.commit().

引用自博主jake9602的专栏:
这两个方法的区别在于:
1. apply没有返回值而commit返回boolean表明修改是否提交成功
2. apply是将修改数据原子提交到内存, 而后异步真正提交到硬件磁盘, 而commit是同步的提交到硬件磁盘,因此,在多个并发的提交commit的时候,他们会等待正在处理的commit保存到磁盘后在操作,从而降低了效率。而apply只是原子的提交到内容,后面有调用apply的函数的将会直接覆盖前面的内存数据,这样从一定程度上提高了很多效率。
3. apply方法不会提示任何失败的提示。
由于在一个进程中,sharedPreference是单实例,一般不会出现并发冲突,如果对提交的结果不关心的话,建议使用apply,当然需要确保提交成功且有后续操作的话,还是需要用commit的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值