SharedPreferences在开发中属于很常用的,基本上在存储轻量级数据的时候都会使用,提一种最简单的用法:
SharedPreferences.Editor editor = context.getSharedPreferences("data", MODE_PRIVATE).edit();
editor.putInt("key", 1);
editor.commit();
context为当前上下文,然后SharedPreferences.Editor传入了一个名叫"key"的int值。
这是最基本的用法,但是除了commit()方法之外,还有另外一个方法apply()
两者肯定有区别,通过源码分析可以发现,commit()方法是有返回值的,也就是说,你可以通过这个方法判断存储是否成功,但是apply()方法没有,它的返回值是一个空值。
但是两者还有一个更加显著的区别!
以下是commit()方法的源码:

以下是apply()方法的源码:

很明显,commit()方法是同步执行的,apply()方法是异步执行的。
所以,给个总结:
因为是异步操作,所以apply()方法的效率是高于commit()的,在不需要判断是否保存成功的情况下,使用apply()是相对好一点的!
网友评论