2015-01-01 6 views
0

Android использует MessageQueue (трубопровод узор резьбы) для обработки события UI (например, кнопки щелчков мыши, движения, изменения ориентации, с обновлением экрана и так далее). Это позволяет вам изменить заголовок кнопки , не беспокоясь о том, что пользователь нажмет кнопку на в тот же момент.Android Тема пользовательского интерфейса визуализации рабочего потока

Но когда мы размещаем сообщение для рабочего потока MessageQueue (which is different with UI Thread MessageQueue)

Как Rendering происходит?

Я хочу сказать, что мы можем выполнить рендеринг только на UI потоке, то как это можно с рабочим потоком тоже.

Пожалуйста, поправьте меня, если я ошибаюсь ...

ответ

1

Согласно моему пониманию.

Мы не можем напрямую обновлять пользовательский интерфейс из рабочего потока. Но мы можем выполнить ряд шагов, предложенных в документе android для обновления содержимого пользовательского интерфейса из рабочего потока.

  1. Создать Handler объект, связанный с основным потоком
  2. Опубликовать Runnable в основной поток из рабочего потока в соответствующее время.

Этот Runnable будет вызываться в основной теме. Этот механизм реализован с помощью Looper and Handler classes.

Не стесняйтесь добавить ответ.

+0

. @ Prem Мы можем создать обработчик, который также может быть связан с рабочей нитью. В этом случае Message (Runnable) будет выполнен в рабочем потоке –

+1

Если вы это сделаете, вы получите доступ к пользовательскому интерфейсу из потока, отличного от UI. Это может работать при некоторых обстоятельствах, но явно запрещено. – GreyBeardedGeek

+0

@GreyBeardedGeek Я сильно согласен с тобой ... спасибо! –

Смежные вопросы