关于Android中SharedPreferences提交数据效率的调研(3)

Manager.putInt()方法形如:
 

public void putInt(String key, int value)     {         editor.putInt(key, value);     } 

日志如下:
 

04-05 03:36:46.214: E/start(9167): ~1333597006214 04-05 03:36:46.244: E/endTime(9167): ~1333597006253 04-05 03:36:46.244: E/time---->(9167): 39 04-05 03:36:46.254: E/average(9167): 0 

这里显示的数据很让人吃惊!

我们来查下Sharedpreferences的实现方式
 

private static final class SharedPreferencesImpl implements SharedPreferences  

在实现putXxx时使用其内部的Map缓存,将数据保存在Map中,当commit时,遍历Map,将数据通过其监听器Listeners提示更新数据文件。

 

listener.onSharedPreferenceChanged(SharedPreferencesImpl.this, key); 

默认情况下,我们没有重写onSharedPreferenceChanged方法,这里就交由Android本身去实现了。但是可以确定的是commit方法涉及到同步,遍历等操作,本身是比较耗时的。
所以减少commit操作本身就是一件可以优化的事情。

结论:
Commit操作本身比较耗时,在保证数据安全的情况下,在数据实时性要求不高的地方,可以尽量累计更改,一次提交,以提高效率。

更多Android相关信息见Android 专题页面 ?tid=11

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://127.0.0.1/wyysds.html