Как вызвать функцию в основной деятельности из сервиса? - PullRequest
2 голосов
/ 26 сентября 2011

Я запускаю службу из своей основной деятельности с помощью startService (). Служба проверяет наличие сокетов на локальном хосте. Когда он получает сокет, он читает данные из него. Я хотел бы скрыть панель уведомлений, когда он получает сокет с конкретными данными. Я уже кодировал функцию hideNotificationBar (), которая находится в моей основной деятельности. Проблема в том, что я не знаю, как вызвать эту функцию в основной деятельности из службы. Спасибо за любую помощь!

Ответы [ 2 ]

5 голосов
/ 27 сентября 2011

Отправить трансляцию из сервиса. Зарегистрируйте свою активность, чтобы получать эту трансляцию и действовать в соответствии с ней.

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

Недостатком является то, что вы можете отправлять только простые типы, Bundle или классы, реализующие Parcelable, через широковещательный Intent.

0 голосов
/ 27 сентября 2011

Я предлагаю вам взглянуть на MessengerService и MessengerServiceActivities из приложения API Demos.
По сути, идея состоит в том, чтобы иметь класс Handler внутри вашей деятельности и службы, которыеобрабатывает связь между двумя.Используйте ServiceConnection в упражнении, чтобы установить соединение с услугой.

...