Android - переход от связующих к трансляциям - PullRequest
2 голосов
/ 23 февраля 2011

Я начал со стандартного локального сервиса Android и использовал Binders с Listeners для связи. Затем: я начал замечать некоторые серьезные проблемы с обработкой изменений ориентации, поэтому я решил пропустить всю связующую вещь и просто перейти к намерениям вещания (и использовать исключительно startService), которые содержат все данные / команды, которые необходимо передать.

Мой вопрос: на какие подводные камни я должен обращать внимание при использовании этого подхода?

Есть ли недостатки?

1 Ответ

1 голос
/ 23 февраля 2011

Если вы поддерживаете API уровня 4 и выше, используйте setPackage(), чтобы сделать вашу «трансляцию» «узкой» - сохраняя трансляцию в своем приложении.По умолчанию трансляция действительно транслируется для всех приложений, которые могут или не могут быть полезны для ваших данных.

Не забудьте отменить регистрацию вашего BroadcastReceiver (т.е. не регистрируйте егои забудь об этом).В то же время вам нужно будет подумать, что делать, если служба закрывается, а активность уже давно исчезла (например, кнопка НАЗАД).Один из подходов состоит в том, чтобы использовать упорядоченную рассылку с зарегистрированным манифестом получателя с низким приоритетом, который поднимет Notification, если вещание не будет обработано - этот пример приложения демонстрирует, что я имею в виду.

Вы могли бы рассмотреть Messenger вместо широковещательного подхода, так как он по сути является "узким вещанием", вероятно, на несколько меньше накладных расходов и не может быть пропущен.Я все еще работаю с механикой использования этого с изменениями конфигурации, хотя.

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