Android - очередь событий - выполняется после установки предпочтений - PullRequest
0 голосов
/ 06 февраля 2012

Я перепланирую оповещения после изменения свойства. Мне нужно прочитать различные переменные. Проблема в том, что когда я запускаю функцию из OnPreferenceChangeListener, эта функция видит старое значение предпочтения.

Я хотел сделать кое-что, что я знаю из разработки AWT / Swing: добавить команду в очередь событий, чтобы она выполнялась после обработанных событий пользовательского интерфейса, это означает также и после завершения операции изменения предпочтений. Проблема в том ... Я не нашел ничего похожего на EventQueue в Android. Я нашел только runOnUiThread операцию, которая мне не нужна, потому что согласно спецификации команда будет немедленно выполнена, если мы уже находимся в потоке пользовательского интерфейса.

Итак, не могли бы вы мне помочь, что мне нужно использовать? Возможно, я искал не то ключевое слово ....

1 Ответ

1 голос
/ 07 февраля 2012

В моем случае, я использовал неправильно, OnPreferenceChangeListener используется во время фазы изменения предпочтения, зарегистрирован для одного предпочтения и должен использоваться для проверки значения предпочтения.

Это то, что мне нужно было, чтобы зарегистрироватьслушатель, который будет вызван после того, как предпочтение уже изменено.Эта задача выполняется с помощью OnSharedPreferenceChangeListener, который будет вызываться после изменения любого предпочтения, и изменение уже видимо приложению:

    PreferenceManager.getDefaultSharedPreferences(this)
        .registerOnSharedPreferenceChangeListener(
            new OnSharedPreferenceChangeListener() {

        public void onSharedPreferenceChanged(
                SharedPreferences sharedPreferences, String key) {
            if (MYKEY1.equals(key) 
                    || MYKEY2.equals(key)) {
                 doSomething();
            }
        }
    });
...