Как изменения пользовательского интерфейса будут обрабатываться в 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 ответ

Правильный. Изменения в элементах пользовательского интерфейса не выполняются немедленно. Они выполняются при следующем запуске цикла пользовательского интерфейса, то есть после того, как вы отпустите управление. Вот почему вы не можете выполнять дорогостоящие операции в потоке пользовательского интерфейса.

Другие вопросы по тегам