SharedPreferences Editor提交需要花费很多时间

时间:2011-02-04 08:10:25

标签: android preferences sharedpreferences

我尝试使用 PreferenceActivity ...

进行配置活动

我找到了一些像

这样的工作示例

“WiFi高级配置编辑器”

“Wifi Config Editor Pro”

但是我写的代码在editor.commit()行等待了10-15秒...... 它必须非常简单,但我无法弄清楚。

这是简短的代码;

...

SharedPreferences prefs = PreferenceManager
                .getDefaultSharedPreferences(v.getContext());
prefs.registerOnSharedPreferenceChangeListener(ClassConfig.this);

    SharedPreferences.Editor editor = prefs.edit();
editor.clear();

editor.putString("key1", value1);
editor.putString("key2", value2);
editor.putBoolean("key3", value3);
    ...
    //i got nearly 35 keys here
    ...
    editor.putString("key33", value33);
editor.putBoolean("key34", value34);
editor.putBoolean("key35", value35);

    editor.commit();

任何想法??

更新:还有一件事。我在日志文件中看到了这些警告

  

W / BackupManagerService(1914)   dataChanged但没有参与者   PKG = 'com.android.providers.settings'   UID = 10046

4 个答案:

答案 0 :(得分:3)

commit()是同步执行的,所以你注意到需要花费很多时间.. 请改用apply()

https://stackoverflow.com/a/5960743/1233659

答案 1 :(得分:2)

提交大型首选项很慢 - 应该在单独的线程中完成。考虑在AsyncTask

中实现此功能

答案 2 :(得分:2)

您应该使用异步的apply()方法。请参阅文档here

答案 3 :(得分:0)

你在做什么? OnSharedPreferenceChanged?

如果您正在使用PreferenceActivity,则不需要手动编写首选项,因为用户更改窗口小部件状态应更改为XML定义的PreferenceActivity键。