afkT/DevUtils

SharedUtils

jiachengliu opened this issue · 4 comments

com.github.afkT:DevUtils:1.7.6@aar

当下面三行同时执行

SharedUtils.put(“k”,v);
android.os.Process.killProcess(android.os.Process.myPid());
finish();

的时候,有时候数据是保存不成功的。
单单执行SharedUtils.put(“k”,v);是没问题的。

afkT commented

该 SharedUtils 实现,最终都是调用 SharedPreferences.Editor apply()

apply 是将修改数据原子提交到内存, 而后异步真正提交到硬件磁盘, 而 commit 是同步的提交到硬件磁盘

实际操作,应该在存储后,延迟一会,才进行 killProcess、finish()

该 SharedUtils 实现,最终都是调用 SharedPreferences.Editor apply()

apply 是将修改数据原子提交到内存, 而后异步真正提交到硬件磁盘, 而 commit 是同步的提交到硬件磁盘

实际操作,应该在存储后,延迟一会,才进行 killProcess、finish()

看出来了,但是会有人也遇到同样的情况。

该 SharedUtils 实现,最终都是调用 SharedPreferences.Editor apply()

apply 是将修改数据原子提交到内存, 而后异步真正提交到硬件磁盘, 而 commit 是同步的提交到硬件磁盘

实际操作,应该在存储后,延迟一会,才进行 killProcess、finish()

我现在把这个类复制出来改成commit了。

afkT commented

因为如果使用 commit 会堵塞线程,如果有特殊需求,可以单独 copy 实现这样的需求