赞
踩
sharepreference 两种提交方式是commit和apply,区别在于:
1.commit 返回boolean类型的值,提示是否提交成功,而apply没有返回值;
2.commit 直接写入磁盘,apply先写入内存,然后异步写入磁盘;
总结:
commit是同步提交,返回值告诉我们是否提交成功;apply是异步提交,效率高,无法确定是否提交成功。
根据阿里巴巴Android开发手册
【推荐】SharedPreference 提交数据时,尽量使用 Editor#apply(),而非 Editor#commit()。一般来讲,仅当需要确定提交结果,并据此有后续操作时,才使 用Editor#commit()。
说明:
SharedPreference 相关修改使用apply方法进行提交会先写入内存,然后异步写入 磁盘, commit方法是直接写入磁盘。如果频繁操作的话apply的性能会优于commit, apply会将后修改内容写入磁盘。但是如果希望立刻获取存储操作的结果,并据此 做相应的其他操作,应当使用commit
//正例 public void updateSettingsAsync() { // 单例的sharepreference SharedPreferences mySharedPreferences = getSharedPreferences("settings", Activity.MODE_PRIVATE); SharedPreferences.Editor editor = mySharedPreferences.edit(); editor.putString("id", "foo"); editor.apply(); } public void updateSettings() { SharedPreferences mySharedPreferences = getSharedPreferences("settings", Activity.MODE_PRIVATE); SharedPreferences.Editor editor = mySharedPreferences.edit(); editor.putString("id", "foo"); if (!editor.commit()) { Log.e(LOG_TAG, "Failed to commit setting changes"); } }
//反例
editor.putLong("key_name", "long value");
editor.commit();
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。