Как изменения пользовательского интерфейса будут обрабатываться в onClickListener перед началом нового действия в Android? - PullRequest
0 голосов
/ 17 января 2011

Я искал здесь, на этом форуме, но не могу найти ответ на свой вопрос. У меня есть следующая проблема:

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

@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 Ответ

2 голосов
/ 18 января 2011

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

...