Правильный способ обнаружения изменений предпочтений в живых обоях? - PullRequest
0 голосов
/ 22 ноября 2011

Я создал живые обои с предпочтительной активностью.К сожалению, каждый раз, когда пользователь изменяет настройку, вызывается onSharedPreferenceChangeListener.Слушатель вызывает некоторые подпрограммы, которые в некоторой степени загружают процессор (реинициализируют большую сетку), поэтому действие по настройке замедляется.Как я могу позвонить слушателю только тогда, когда пользователь выходит из действия предпочтения?

Ответы [ 2 ]

1 голос
/ 30 ноября 2011

Возможно, вам следует использовать onPause или onDestroy в вашей предпочтительной активности для расчета вашей большой сетки.Кажется, вы просто хотите пересчитать изменения любого атрибута, поэтому просто установите флажок в onPreferencesChanged и выполняйте математику, когда активность закрыта и вы возвращаетесь к liveWallpaper-View.

Другой способ - начать вычисленияв параллельном потоке, чтобы позволить preferenceActivity действовать как обычно.

1 голос
/ 22 ноября 2011

Получить экземпляр объекта SharedPreferences с:

SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences(context);

Затем зарегистрируйте SharedPreferences.OnSharedPreferenceChangeListener

Обычно мой класс Engine реализует интерфейс SharedPreferences.OnSharedPreferenceChangeListener, поэтому я просто вызываю внутри конструктора Engine:

mPrefs.registerOnSharedPreferenceChangeListener(this);

Затем просто реализуйте метод onSharedPreferenceChanged(SharedPreferences prefs, String key) в своем классе Engine.

Вы также можете реализовать отдельный класс, который будет действовать как OnSharedPreferenceChangeListener, если хотите.

...