6

我尝试使用PreferenceActivity进行配置活动...

我发现了一些工作示例,例如

《WiFi 高级配置编辑器》

“Wifi配置编辑器专业版”

但是我写的代码在线等待10-15秒editor.commit()......它一定很简单但我想不通。

这是简短的代码;

...

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

4 回答 4

3

commit()是同步执行的,所以你注意到它需要很多时间..apply()改为使用。

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

于 2013-08-01T21:31:14.157 回答
2

提交大的偏好很慢 - 它应该在单独的线程中完成。考虑在AsyncTask

于 2011-02-07T15:00:25.393 回答
2

您应该使用apply()异步的方法。在此处查看文档

于 2015-02-01T23:24:46.563 回答
0

你在哪里做这个?OnSharedPreference 已更改?

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

于 2011-02-07T15:08:42.457 回答