Обработчик - это очень простой способ, который позволяет вам выполнять некоторый код в другом потоке, обычно в потоке пользовательского интерфейса. Он не говорит вам, как запустить ваши темы, и вы можете делать все, что вы хотите в этом отношении. Я бы выбрал handleMessage
подход, если у вас есть явный обмен сообщениями. То есть вам нужно, чтобы некоторые данные были отправлены и получены. Если вам просто нужно что-то сделать, вы можете использовать Runnable
. Однако оба метода пригодны для использования, и выбор часто будет результатом предпочтения.
AsyncTask
- это концепция более высокого уровня, которая использует обработчики под капотом. Если вы используете его, вам не придется иметь дело с потоками самостоятельно. Ваш асинхронный код будет выполняться через пул потоков и контролироваться платформой. У вас будет два метода, которые позволят вам выполнить код в потоке пользовательского интерфейса (onPostExecute
и onProgressUpdate
).
В двух словах, выберите AsyncTask
для большинства вещей, которые вы делаете с несколькими потоками, это избавит вас от необходимости заниматься управлением потоками самостоятельно. Если вам нужны только собственные потоки, используйте обработчики. Обратите внимание, что есть и другие случаи, когда вам нужно использовать обработчики. Например, с Messenger
. Также у меня были случаи, когда использования onProgressUpdate
недостаточно. В этом случае я бы также использовал обработчик из doInBackground
.