Как изменения пользовательского интерфейса будут обрабатываться в onClickListener перед началом нового действия в Android?
Я искал здесь на этом форуме, но я не могу найти ответ на свой вопрос. У меня есть следующая проблема:
У меня есть просмотр изображений и два текста, и я хочу изменить цвет при выделении, чтобы показать показ визуальной обратной связи перед загрузкой следующего действия.
@Override
public void onClick(View v) {
openFormOverviewButton.setColorFilter(0x22FFFFFF, Mode.SRC_ATOP);
openFormOverviewTitle.setTextColor(0xFF00851B);
openFormOverviewText.setTextColor(0xFF00851B);
Intent tki = new Intent();
tki.setClass(getApplication(), DataCollectorFormOverviewActivity.class);
startActivity(tki);
}
Я ожидаю, что кнопка и тексты будут изменены, а затем начнется новое действие. Тем не менее, текст не меняется, и действие начинается. Если я вызову три строки в runnable в потоке пользовательского интерфейса (runOnUiThread(new Runnable() {...}), то изменения будут применены до начала действия. Это на самом деле странно, потому что метод onClick вызывается для основная тема ака.
Означает ли это, что изменения в потоке пользовательского интерфейса не выполняются немедленно в потоке пользовательского интерфейса? Или я что-то не так делаю?
Бест, Адам
1 ответ
Правильный. Изменения в элементах пользовательского интерфейса не выполняются немедленно. Они выполняются при следующем запуске цикла пользовательского интерфейса, то есть после того, как вы отпустите управление. Вот почему вы не можете выполнять дорогостоящие операции в потоке пользовательского интерфейса.