В чем разница между потоком и обработчиком - PullRequest
20 голосов
/ 24 февраля 2012

Я пытаюсь выяснить разницу между потоком и обработчиком. Создает ли новый обработчик новый поток? Когда новый обработчик запускается с использованием post (), создает ли он новый поток? Пожалуйста, объясните

Ответы [ 3 ]

21 голосов
/ 24 февраля 2012

Потоки - это общие задачи обработки, которые могут выполнять большинство задач, но одну вещь, которую они не могут сделать, это обновить пользовательский интерфейс.

С другой стороны, обработчики связаны с потоками, которые позволяют вам взаимодействовать с потоком пользовательского интерфейса (обновить пользовательский интерфейс).

Так, например, показать тост или обновить индикатор выполнения с помощью сообщения (Runnable), отправленного обработчику, но вы не сможете, если вы запустите этот runnable как поток.

С обработчиком вы также можете иметь такие вещи, как MessageQueuing, планирование и повторение.

Мне еще предстоит столкнуться с ситуацией, когда мне нужна нить в Android.

В основном я использую комбинацию AsyncTasks и Handlers.

Обработчики для вышеперечисленных задач.

AsyncTasks для загрузки / извлечения данных и опроса и т. Д.

Вы можете прочитать статью для разработчиков здесь " Painless Threading " для получения дополнительной информации о потоках в Android.

Исправление: Каждый экземпляр обработчика связан с одним потоком и очередью сообщений этого потока. Они не являются нитями от своего имени. как описано здесь .

2 голосов
/ 24 февраля 2012

Поток определяет запущенный процесс. Как у вас есть основной (поток пользовательского интерфейса) в Android. и все остальные потоки работают в фоновом режиме. (параллельно).

Обработчик совершенно другой, это все равно что инициировать задачу, определенную в обработчике.

Чтобы устранить путаницу и выполнить многопоточность в Android, вы должны прочитать: http://android -developers.blogspot.com / 2009/05 / безболезненным-threading.html

и я бы предложил AsyncTask вместо использования Thread во всех случаях.

0 голосов
/ 29 июня 2016

Почему мы используем обработчики с резьбой:

Когда мы устанавливаем приложение в Android, то оно создает поток для этого приложения с именем MAIN UI Thread. Все действия выполняются в этом потоке. По правилу модели однопоточного андроида мы не можем получить доступ к элементам пользовательского интерфейса (растровое изображение, textview и т. Д.). ) непосредственно для другого потока, определенного внутри этого действия.

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

...