Android 中sharedpreference的commit和apply的区别

        今天在提交代码的时候,提示有warning,以前都是看都不看,直接跳过的,今天心血来潮,打开看了一下,也发现了一些自己在编码过程中不规范的地方,然后,就看到了这边文章的重点,关于sharedpreference的commit和apply的,原文如下:

Warning:(86, 37) Consider using `apply()` instead; `commit` writes its data to persistent storage immediately, whereas `apply` will handle it in the background

截个图吧

大致意思是说,这里考虑用apply()方法替代commit()方法,commit会立即把数据写入到persistent storage(这里不知怎么精准的表达,各位自行理解吧),而apply则会在后台进行该操作。


        关于他们的区别,上面的warning其实也差不多概括了,下面具体区别转载自http://www.jianshu.com/p/c8d10357c939

     

commit和apply方法的区别:
  1. commit和apply虽然都是原子性操作,但是原子的操作不同,commit是原子提交到数据库,所以从提交数据到存在Disk中都是同步过程,中间不可打断。

  2. 而apply方法的原子操作是原子提交的内存中,而非数据库,所以在提交到内存中时不可打断,之后再异步提交数据到数据库中,因此也不会有相应的返回值。

  3. 所有commit提交是同步过程,效率会比apply异步提交的速度慢,但是apply没有返回值,永远无法知道存储是否失败。

  4. 在不关心提交结果是否成功的情况下,优先考虑apply方法。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值