Я пытаюсь выяснить разницу между потоком и обработчиком. Создает ли новый обработчик новый поток?. Когда новый обработчик запускается с помощью post(), создает ли он новый поток? Пожалуйста, объясните
В чем разница между потоком и обработчиком
Ответ 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 другим потоком, мы будем использовать обработчики.