Индикатор моей активности показывают по моему алгоритму - PullRequest
0 голосов
/ 08 марта 2012

У меня есть функция onClickButton, где я делаю (псевдокод):

show activityIndicatorView (or ProgressBar or change label text no matter)
execute my algorithm
hide activityIndicatorView

actvitiyIndicatorView никогда не будет отображаться. Если я удалю скрыть в конце функции, то он появится после алгоритма. Несмотря на то, что я показываю это перед выполнением алгоритма.

Почему и как я могу это исправить?

1 Ответ

2 голосов
/ 08 марта 2012

Скорее всего, вы выполняете мой алгоритм, это длительный процессорный процесс, который вызывается в основном потоке ...

вы также показываете индикатор активности непосредственно перед алгоритмом ... Пользовательский интерфейс обычно принимаетнекоторое время, чтобы обновить макет (добавив индикатор активности ..) ... но прежде чем это произойдет ... ваш a; горит происходит в главном потоке .. и он блокирует обновление пользовательского интерфейса .. поэтому, когда задача завершится .. выскажи, чтобы скрыть активность ... а твоя активность скрывается .... вот почему ты не можешь видеть, как она добавляется, а затем удаляется из поля зрения.

Чтобы решить эту проблему, выполните задачу алгоритма.в отдельном потоке (без основного потока) .. таким образом пользовательский интерфейс будет обновлен и задача будет выполнена в фоновом режиме ..

Альтернативный способ - выполнить длинное задание после некоторой задержки .. такэтот пользовательский интерфейс обновляется

...