我尝试使用 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
答案 0 :(得分:3)
commit()
是同步执行的,所以你注意到需要花费很多时间..
请改用apply()
。
答案 1 :(得分:2)
提交大型首选项很慢 - 应该在单独的线程中完成。考虑在AsyncTask
答案 2 :(得分:2)
您应该使用异步的apply()
方法。请参阅文档here
答案 3 :(得分:0)
如果您正在使用PreferenceActivity,则不需要手动编写首选项,因为用户更改窗口小部件状态应更改为XML定义的PreferenceActivity键。