Сервис для ServerSocket - должен ли он быть в отдельном потоке? - PullRequest
1 голос
/ 20 января 2012

Я пишу простое приложение, которое использует sockets.У меня есть действие, которое запускает службу после нажатия кнопки;короче говоря, onStart в этом сервисе делает что-то вроде этого:

ss=new ServerSocket(portNum);
Socket socket=ss.accept();
//some other unrelated stuff

Мне кажется, что сервисы могут работать в фоновом режиме независимо от действий (я новичок в Android и, собственно, это мой первыйapp), но моя активность зависает до тех пор, пока ss.accept() не завершится (я имею в виду, пока клиент не подключится - кнопка остается в нажатом состоянии, и я ничего не могу сделать).Это нормальное поведение или я должен искать ошибку где-то в моем коде?Или, может быть, поместить этот кусок кода в отдельном потоке?

1 Ответ

2 голосов
/ 20 января 2012

По умолчанию в локальных службах Android используется один и тот же поток пользовательского интерфейса. Вот почему ваша активность замерзает. Вы должны создать сервис, создать поток в этом сервисе и запустить команду в другом потоке.

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