Android — Подключение действий и служб

#java #android

#java #Android

Вопрос:

Я имею в виду этот базовый дизайн:

  • Основное действие предложит выбор вспомогательных действий, а также создаст службу Bluetooth.
  • Служба Bluetooth будет считывать и буферизовать текущие данные с устройства, подключенного по Bluetooth. Достаточно данных с достаточно высокой скоростью (от 100 до 1000 sps), так что я не думаю, что реалистично использовать намерения или широковещательную передачу

  • Вспомогательные действия будут просто отображать одни и те же полученные данные, но по-другому. Каждое дополнительное действие также позволяет пользователю взаимодействовать с данными по-разному.

  • Я действительно предпочитаю, чтобы служба Bluetooth не зависела от активности / представления, в которое представляются данные.

Я был бы готов «зарегистрировать» кучу «назначения» (что на самом деле было бы действиями), на которые будут отправляться «приготовленные» данные. Я не совсем понял, как «зарегистрировать» что-либо с момента запуска действия.

Как мне передать, например, ссылку на мой сервис для каждого из этих действий? Или это может быть наоборот; как мне зарегистрировать каждое действие в запущенной службе.

Имея опыт работы на C / C , я понимаю, что это может быть не очень хорошим подходом в Java. Спасибо.

Ответ №1:

В идеале это не самый лучший способ подойти к этому. В частности, Android — это система, которая основывает свои сервисы на передаче информации посредством намерений от действия к действию, от действия к сервису, от сервиса к сервису.

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

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

Эти ссылки должны помочь

Широковещательный приемник

http://thinkandroid.wordpress.com/2010/02/02/custom-intents-and-broadcasting-with-receivers/

Услуги

http://developer.android.com/reference/android/app/Service.html

http://marakana.com/forums/android/examples/60.html

Комментарии:

1. Да, я видел возможное использование дополнительного намерения, но это кажется чрезмерными накладными расходами для чего-то, что может вызываться так много раз в секунду. Это может сработать, если я готов пожертвовать задержкой и «сгруппировать большие куски» выборочных данных : (но все же это кажется большими накладными расходами.

2. Да, вы правы, возможно, было бы лучше сделать для этого какое-нибудь взаимодействие на основе сокетов.