Нужно некоторое руководство с несколькими приложениями IPC - PullRequest
0 голосов
/ 04 февраля 2012

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

В новом проекте я скомпилировал кишки в «my.main.package», который запускает сервис, который постоянно обрабатывает данные, которые могут использовать другие клиенты / приложения… Ну, это мой план. Например, в этом сервисе есть пользовательский поток / цикл таймера, который постоянно считает. Каков наилучший способ для любых других приложений получать постоянную подачу этого таймера и других данных, как слушатель мог бы в своей собственной песочнице и как можно менее затратным способом?

Я предполагаю, что необходимо реализовать aidl для IPC, но я не уверен, нужна ли она и / или необходима, поскольку данные из my.main.package являются только исходящими, то есть другим приложениям нужно только получать / слушать. Я понимаю, что должна существовать какая-то форма обработки сообщений или сортировки посылок и возможные разрешения с помощью aidl, но я подумал, что кодирование / декодирование посылки или отправка сообщения каждую миллисекунду будет очень обременительным. Является ли помощь единственным способом или есть возможность транслировать данные, как вы можете?

Любая помощь будет принята с благодарностью!

Ответы [ 2 ]

0 голосов
/ 15 ноября 2015

Фактически, IPC с AIDL - единственный и самый эффективный способ удовлетворить ваши требования, я думаю. Если вам нужна одна демоверсия, вы можете посмотреть здесь . Это простой пример, который я написал для изучения AIDL & Binder на Android. Надеюсь, что это может дать вам краткое начало.

0 голосов
/ 04 февраля 2012

В новом проекте я скомпилировал кишки в my.main.package, который запускает службу, которая постоянно обрабатывает данные, которые могут использовать другие клиенты / приложения

Aслужба должна работать только тогда, когда она активно доставляет значение пользователю .Пользователи думают, что разработчики, которые создают сервисы, которые работают постоянно, являются идиотами и атакуют свои приложения убийцами задач, принудительными остановками из приложения «Настройки» и т. Д.

Возможно, ваше описание просто изображает ваше приложение в плохом состоянии.легкий, но «сервис, который постоянно обрабатывает данные» - это анти-паттерн.Это телефоны и планшеты, а не серверы.

Каким будет лучший способ для любых других приложений получать постоянную подачу этого таймера и других данных, как слушатель мог бы в своей собственной песочнице и вНаименьший возможный способ налогообложения?

Лучше всего, чтобы они не были отдельными приложениями.

Например, в этом сервисе есть пользовательский поток /таймер цикла, который постоянно подсчитывает.

Это не добавляет значения пользователю.

Я предполагаю, что необходимо реализовать aidl для IPC, но я не уверенесли это необходимо и / или необходимо, поскольку данные из my.main.package являются только исходящими, то есть другим приложениям нужно только получать / слушать.

Удаленный сервис, использующий AIDL, является одним из способов выполнения IPC.Это не единственный способ.Это даже не самый распространенный способ.Вы также можете:

  • отправить широковещательную рассылку Intent
  • , чтобы клиент отправил Messenger службе, а служба отправляет сообщения клиенту через эту Messenger
  • имеет обновление службы ContentProvider, и клиенты регистрируют ContentObserver на ContentProvider

Я понимаю, что должна быть какая-то форма сообщенияобработка или отправка маршаллинга и возможные разрешения с помощью aidl, но я подумал, что кодирование / декодирование посылки или отправка сообщения каждую миллисекунду будет очень обременительным.

В целом IPC "очень обременителен",Следовательно, по возможности следует избегать IPC.

...