2009-12-21 3 views
0

Это сценарий:Android фон сценарий работы

  1. Пользователь имеет основной вид деятельности, используемый для пользовательского интерфейса.
  2. Программа должна связываться со сверстниками и поддерживать связь и ждать сообщений
  3. Когда приходит сообщение, оно отображается в основном действии.

Итак, вопрос в том, должен ли я использовать сервис для связи и какой вид обслуживания?

А также следует использовать AsyncTask в сервисе, чтобы сохранить свой пользовательский интерфейс и почему?

ответ

5

Важно то, что любая интенсивная работа с ЦП или блокирование ввода-вывода (включая ожидание входящих сетевых подключений) происходит в потоке отдельно от основного потока пользовательского интерфейса.

Если вам нужна сетевая связь, чтобы оставаться в рабочем состоянии, пока ваша деятельность жива, используйте второй поток в своей деятельности. Если вам необходимо поддерживать сетевое общение даже после того, как ваша деятельность была убита, вам нужно будет воспользоваться услугой.

Имейте в виду, что поведение по умолчанию заключается в том, что служба использует тот же процесс и поток, что и все остальное в одном приложении (включая активность, предоставляющую ваш интерфейс). По этой причине, даже если вы используете услугу, вам все равно нужно создать новый поток, чтобы получить желаемый эффект.

AsyncTask используется для выполнения задачи в отдельном потоке, который в конечном итоге завершит и вернет результат. Если это звучит как ваше приложение, то не стесняйтесь использовать его. Но если вы держите порт открытым по нескольким запросам (что означает, что у вас нет единственного возвращаемого значения), использование этого класса будет всего лишь бременем.

+0

Отличная информация Тревор. –