存储数据之SharedPreference

官方文档:

SharedPreferences getPreferences (int mode)这个方法实际是对getSharedPreferences(String, int)方法的一个简单包装,传如参数默认为activity的类名。



SharedPreferences的使用方法


SharedPreferences是一个用于访问和修改用于访问和修改getSharedPreferences(String,int)返回的首选项数据的接口。 对于任何特定的首选项集合,所有客户端共享此类的单个实例。 对首选项的修改必须通过SharedPreferences.Editor对象进行,以确保首选项值保持在一致状态并在提交到存储时进行控制。 从各种get方法返回的对象必须被应用程序视为不可变的。


注意:此类不支持在多个进程中使用。
boolean contains (String key)
返回在SharedPreferences中是否包含传入key的值。包含返回true,不包含返回false。
例如sp.contains("foo"),将会检查是否包含key值为foo的存储键值对是否存在。


2.SharedPreferences.Editor edit ()


获取SharedPreferences的编辑工具,获取方法为
SharedPreferences.Editor edit=sp.edit()


注意:你必须调用commit()方法才能将你的改变的值真正存入到sp中。
3.Map getAll ()
返回一个map类型的所有的键值对。


注意:你不能直接编辑这个map。
4.Set getStringSet (String key,
Set defValues)


这个方法将会返回一个set集合,同样你也不能直接编辑这个集合。


SharedPreferences.Editor的使用方法
1.void apply ()


将编辑器中的SharedPreferences更改提交给正在编辑的SharedPreferences对象。这将原子地执行所请求的修改,替换当前在SharedPreferences中的任何内容。


当使用两个editor同时编辑时,最后一个调用的editoer将会覆盖前边调用的editor结果。


此方法与commit不同,apply是将更改的内容立即提交到内存中的SharePreferences中,然后在异步任务中提交到磁盘存储,并且不会通知你是否成功或者失败。


假如此时一个编辑器执行常规的commit方法,而apply仍然未完成,则commit将会阻塞,等到apply完全完成才会执行commit。


由于SharedPreferences实例是进程内的单例,如果你不关心返回值,那么可以使用apply()替换任何commit()实例。


你不需要担心Android组件生命周期及其与apply()写入磁盘的交互。该框架确保来自apply()的在线磁盘写入在切换状态之前完成。


不建议直接实现SharedPreferences.Editor接口。然而,如果你以前实现它,并且现在得到关于缺少apply()的错误,你可以简单地调用apply()from commit()。
SharedPreferences.Editor clear ()
在编辑器中标记以从首选项中删除所有值。 一旦commit 被调用,唯一剩余的SharedPreferences将是您在此编辑器中定义的东西何。


注意,当提交SharedPreferences项时,无论是在此编辑器上放置方法之前还是之后调用clear,都会先清除。


3.boolean commit ()


将编辑器中的首选项更改提交回正在编辑的SharedPreferences对象。 这将原子地执行所请求的修改,替换当前在SharedPreferences中的任何内容。


注意,当两个编辑器同时修改首选项时,最后一个editor会覆盖前一个editor的commit。


如果你不关心返回值,并且你从应用程序的主线程使用它,请考虑使用apply()。


4.SharedPreferences.Editor remove (String key)


在editor中标记这个key的键值对将被删除,在commit中实际完成。


当提交给SharePreferences的时候,无论你在put之前还是之后调用,remvove都会先执行。


关于我自己的几点建议:

猜你喜欢

转载自blog.csdn.net/nuonuonuonuonuo/article/details/62888018
今日推荐