Почему мой onSharedPreferenceChangeListener вызывается несколько раз, когда я меняю преф - PullRequest
1 голос
/ 31 мая 2010

Я написал приложение с 3 вкладками. Каждая вкладка имеет одно и то же представление списка с различными источниками данных. Я настроил SharedPreferences в действии tabhost, но я добавил свой метод onSharedPreferenceChangeListener в список своих возможностей. Когда я меняю предпочтение, мой слушатель вызывается, и он обновляет мою базу данных. Это все работает. Однако, если я изменю данные на вкладке 1, он вызывает моего слушателя один раз. Если я изменяю данные для вкладки 2, она вызывает их дважды, а если я изменяю данные на вкладке 3, она вызывает их три раза. Есть идеи, почему это так работает? Я полагаю, я мог бы настроить свои общие префы в моем списке возможностей, и это могло бы избежать проблемы, но мне любопытно, почему мой слушатель вызывается несколько раз, если он находится на другой вкладке.

brockoli

1 Ответ

2 голосов
/ 15 марта 2012

Вы поместили unregisterOnSharedPreferenceChangeListener () в onDestroy (), и он не вызывается при всех перезапусках активности.

Вывод заключается в том, что правильный способ сделать это - разместить registerOnSharedPreferenceChangeListener () и unregisterOnSharedPreferenceChangeListener () в onResume () и onPause () соответственно.

...