SharePreference Commit vs Apply

原创 2016年08月31日 16:14:53

commit() writes the data synchronously (blocking the thread its called from). It then informs you about the success of the operation.
apply() schedules the data to be written asynchronously. It does not inform you about the success of the operation.
If you save with apply() and immediately read via any getX-method, the new value will be returned!
If you called apply() at some point and it’s still executing, any calls to commit() will block until all apply-calls and its own commit are finished.

Unlike commit(), which writes its preferences out to persistent storage synchronously, apply() commits its changes to the in-memory SharedPreferences immediately but starts an asynchronous commit to disk and you won’t be notified of any failures. If another editor on this SharedPreferences does a regular commit() while a apply() is still outstanding, the commit() will block until all async commits are completed as well as the commit itself. As SharedPreferences instances are singletons within a process, it’s safe to replace any instance of commit() with apply() if you were already ignoring the return value.

Commit 是同步的,而SharePreference是单例的,所以有可能被别的读写操作block住。所以UI线程最好不用Commit。

Apply是异步的,不会阻塞。但是不能保证马上写入,如果写完马上check有可能是不对的

相关文章推荐

从源码角度分析sharedPreferences的commit()与apply()的区别

对于Android开发者来说,对于sharedPreferences并不默认,用于存储轻量级的数据,而存储的时候,会用到Editor,在API 9之前,提交的时候用用到了editor.commit()...

SharedPreference.Editor的apply和commit方法异同

在android 中存储数据时经常用SharedPreference, 并且在提交数据时一直用的是Editor的commit方法, 今天无意了看到了系统用了apply,看了方法的介绍, 原来这个方法也...

SharedPreference中apply和commit

今天用到SharedPreference存储了一些数据,熟悉Android的同学们都知道SharedPreference需要创建一个Editor然后put进去对应的值,然后使用commit来进行保存就...
  • rubeson
  • rubeson
  • 2017年03月30日 22:45
  • 183

Android SharedPreference.Editor的apply和commit方法异同

在android 中存储数据时经常用SharedPreference, 并且在提交数据时一直用的是Editor的commit方法, 今天无意了看到了系统用了apply,看了方法的介绍, 原来这个方法也...

SharedPreference.Editor的apply()方法和commit()方法的区别

今天在写代码的时候,Android Studio提示在sharedPreference.editor后用apply( )方法代替commit( )方法,于是去百度了一下两者的区别: 官网的解释: ...

Android-SharePreferences的commit和apply

apply方法在官方SDK说明如下:Commit your preferences changes back from this Editor to the SharedPreferences obj...

SharedPreferences中的commit和apply方法

preferences:参数 SharedPreferences:共享参数 1. SharedPreferences对象获取context类中的getSharedPreferences方法可以获取一个...

SharedPreference.Editor的apply和commit方法区别

今天在看一段代码的时候被apply和 这两个方法的主要区别是:

SharedPreference.Editor的 apply 和commit 方法异同

在Android 中存储数据时经常用SharedPreference, 并且在提交数据时一直用的是Editor的commit(API 1中的方法), 系统用了apply(API 9中的方法),看了方法...

SharedPreferencesUtils 工具类 及 SharedPreferences apply和commit方法异同

SharedPreferencesUtilspackage com.hhh.android.base.common; import java.util.Map; import android.co...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SharePreference Commit vs Apply
举报原因:
原因补充:

(最多只允许输入30个字)