Android: вызов метода в действии из службы (в том же Activity) - PullRequest
0 голосов
/ 04 декабря 2010

У меня был похожий вопрос, но ответ не полностью решил мою проблему.

Вот что я пытаюсь сделать: у меня есть класс Service, который зацикливается на получение TCP-соединений. Если соединение получено, можно прочитать строку. Это может быть один из двух: «START» или «STOP».

Когда появляется «START», я создаю (запускаю) новое действие с некоторым GUI, а также двумя потоками (один отправляет пакеты UDP и записывает аудио, другой получает UDP и воспроизводит аудио). Этот класс содержит 2 сокета, один объект AudioTrack и один AudioRecord.

Когда класс Service получает «STOP» в качестве своих данных в TCP-соединении, я хотел бы вызвать метод внутри этого класса Activity (не создавать новый), закрыть эти 2 сокета и вызвать stop () и release () для объекта AudioTrack / AudioRecord.

Прямо сейчас, когда я получаю «СТОП», я могу создать только новое действие, поэтому эти объекты не инициализируются. Есть ли способ, пожалуйста, на самом деле вызвать метод внутри ранее запущенной деятельности? Могу ли я сохранить ссылку на это действие (или намерение) и просто вызвать метод о нем, или мне нужно изменить весь мой дизайн? Предложения будут приветствоваться в этом случае.

Спасибо,

Джеймс

Ответы [ 2 ]

0 голосов
/ 08 марта 2011

Учитывая мое понимание жизненных циклов Активности и Сервиса, мне кажется, что ваш подход к открытию сокетов в Деятельности создаст для вас проблемы.

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

Ссылка

0 голосов
/ 04 декабря 2010

Вы можете установить START_FLAG_SINGLE_INSTANCE (я думаю, это то, что он называется) в флагах намерений, и оно отправит намерение уже запущенному действию.Затем вы можете получить это намерение в onNewIntent () в действии.

В качестве альтернативы, почему бы службе не управлять сокетами?

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