Я немного запутался в различиях между Handlers
, AsyncTask
и Threads
в Android. Я прочитал немало блогов и вопросов здесь, в Кару.
Handler
являются фоновыми потоками, которые предоставляют вам возможность общаться с пользовательским интерфейсом. Например, обновление индикатора выполнения должно выполняться через Handler
. Используя обработчики, вы получаете преимущество MessagingQueues
, так что если вы хотите планировать сообщения или обновлять несколько элементов пользовательского интерфейса или выполнять повторяющиеся задачи.
AsyncTask
похожи, на самом деле они используют Handler
, но не работают в потоке пользовательского интерфейса, так что это хорошо для извлечения данных, например, для извлечения веб-сервисов. Позже вы можете взаимодействовать с пользовательским интерфейсом.
Однако Thread
не может взаимодействовать с пользовательским интерфейсом, обеспечивает более "базовую" многопоточность, и вы упускаете все абстракции AsyncTask
.
Тем не менее, я хотел бы, чтобы соединение с сокетом работало. Должно ли это быть выполнено в обработчике или потоке, или даже в AsyncTask
? Взаимодействие с интерфейсом вообще не нужно. Имеет ли это значение с точки зрения производительности, которую я использую?
Между тем документация была значительно улучшена.