Команда SharedPreferences Editor занимает так много времени

Я пытаюсь сделать настройку с помощью PreferenceActivity …

Я нашел несколько рабочих примеров, например

«Редактор расширенной конфигурации WiFi»

а также

"Wifi Config Editor Pro"

Но код, который я написал, ждет 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

commit() выполняется синхронно, поэтому вы замечаете, что это занимает много времени. Вместо этого используйте apply() .

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

Задание больших предпочтений происходит медленно – это нужно делать в отдельном потоке. Подумайте об этом в AsyncTask

Вы должны использовать метод apply() который является асинхронным. См. Документы здесь

Где вы это делаете? OnSharedPreferenceChanged?

Если вы используете PreferenceActivity, вам не нужно вручную писать свои префы, так как изменение состояния виджета пользователем должно изменить ключ, определенный в XML для PreferenceActivity.