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方法。


猜你喜欢

转载自blog.csdn.net/Bentley_li/article/details/72844352