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