Подтвердить что ты не робот

В чем разница между потоком и обработчиком

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

4b9b3361

Ответ 1

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

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

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

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

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

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

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

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

Вы можете прочитать статью разработчика здесь Безболезненная Threading" для более тонкой работы в android.

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

Ответ 2

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

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

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

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

Ответ 3

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

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

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