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有可能是不对的

SharePreferences源码分析(commit与apply的区别以及原理)

前提概要上一篇文章SharePreferences源码分析(SharedPreferencesImpl),笔者分析了SharedPreferencesImpl的原理,然而结尾有读者评论说想通过源码理解...
  • Double2hao
  • Double2hao
  • 2016年12月25日 20:08
  • 4280

SharedPreferences的用法及指南

一句话概括SharedPreferences在android中主要以xml文件的方式保存较小的键值对。1.SharedPreferences介绍在android中,保存较小的android键值对,主要...
  • IT_XF
  • IT_XF
  • 2017年01月12日 00:12
  • 1261

数据持久化之SP的优化—送工具类

工具类,能实现存储各种数据类型,也能读取到,所有方法都已经写好,就等你点进来...
  • Jack_King007
  • Jack_King007
  • 2014年11月11日 00:26
  • 1576

存储位置 内部存储 外部存储 SharePreference

1、概述 app在开发的时候经常会遇到要cu
  • lckj686
  • lckj686
  • 2014年07月10日 09:50
  • 1764

多线程死锁调试小技巧

据说再高的高手在写多线程程序的时候都难确保不会产生死锁,死锁的调试也就成为一个比较常见的问题,假设有下面这样一个问题:   一个正在生产环境下运行的进程死锁了,或者你只是在跑一个程序,并没有在调...
  • cupidove
  • cupidove
  • 2016年10月12日 14:10
  • 1416

git找到丢失的commit

从Git仓库中恢复已删除的分支、文件或丢失的commit [日期:2014-09-27] 来源:Linux社区  作者:Linux [字体:大 中 小]   在使用Git的过程...
  • coder_jack
  • coder_jack
  • 2016年04月13日 18:16
  • 1723

android开发游记:使用sharepreference存储复杂对象的解决方案

sharepreference是android系统中的一种数据持久化的解决方案,我们经常用它来存储APP的配置信息和一些简单数据类型,但是我们可不可以用它来存放复杂数据类型呢?shareprefere...
  • liaoinstan
  • liaoinstan
  • 2015年11月09日 15:55
  • 6488

使用Sharepreference+Thread+Handler进行异步处理实现倒计时功能

使用Sharepreference+Thread+Handler进行异步处理实现倒计时功能
  • SSBBY
  • SSBBY
  • 2017年05月10日 17:20
  • 591

SharePreference+序列化存储对象

在开发过程中我们经常会需要存储一些数据,有时候我们存储零碎的配置信息和数据时会觉得很繁琐,那么是不是可以直接将包含信息的对象直接保存下来呢?答案是肯定的,本文记录了利用SharePreference+...
  • JunaQian
  • JunaQian
  • 2016年11月10日 10:06
  • 831

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

对于Android开发者来说,对于sharedPreferences并不默认,用于存储轻量级的数据,而存储的时候,会用到Editor,在API 9之前,提交的时候用用到了editor.commit()...
  • wangpingtaohn
  • wangpingtaohn
  • 2017年07月15日 14:24
  • 124
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SharePreference Commit vs Apply
举报原因:
原因补充:

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