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

被折叠的 条评论
为什么被折叠?



