Важно то, что любая интенсивная работа с ЦП или блокирование ввода-вывода (включая ожидание входящих сетевых подключений) происходит в потоке отдельно от основного потока пользовательского интерфейса.
Если вам нужна сетевая связь, чтобы оставаться в рабочем состоянии, пока ваша деятельность жива, используйте второй поток в своей деятельности. Если вам необходимо поддерживать сетевое общение даже после того, как ваша деятельность была убита, вам нужно будет воспользоваться услугой.
Имейте в виду, что поведение по умолчанию заключается в том, что служба использует тот же процесс и поток, что и все остальное в одном приложении (включая активность, предоставляющую ваш интерфейс). По этой причине, даже если вы используете услугу, вам все равно нужно создать новый поток, чтобы получить желаемый эффект.
AsyncTask используется для выполнения задачи в отдельном потоке, который в конечном итоге завершит и вернет результат. Если это звучит как ваше приложение, то не стесняйтесь использовать его. Но если вы держите порт открытым по нескольким запросам (что означает, что у вас нет единственного возвращаемого значения), использование этого класса будет всего лишь бременем.
Отличная информация Тревор. –