Активность Android - удаленная служба helpl двусторонняя связь

У меня две проблемы:

  • Я знаю, что для активности подключения и удаленного обслуживания я должен использовать AIDL. Я пробовал это, и он работает, но я могу найти только один пример подключения. Простыми словами - чтение чего-то из службы (по видам деятельности). Но мне нужно решить отправить некоторые данные в действие (по службе или из службы). Это так важно, потому что служба должна немедленно отправить некоторую информацию в действие после некоторых ее событий (получить данные из сети).
  • Можно ли снова запустить закрытое приложение (активность) из удаленного сервиса?

Приветствуются любые предложения.

Привет

Артик

Ответ 1

Это так важно, потому что служба должна немедленно отправить некоторую информацию в действие после некоторых ее событий (получить данные из сети).

Вы можете использовать AIDL для двусторонней связи. Вам нужно будет выставить не только интерфейс службы, но и интерфейс обратного вызова через AIDL с клиентом, имеющим .Stub обратного вызова, и предоставить экземпляр этого параметра в параметре методу интерфейса службы. Это немного сложнее - вот пара примеров приложений из моей книги, которые демонстрируют технику:

Можно ли запустить снова закрытое приложение (активность) из удаленного сервиса?

Ваш сервис может вызвать startActivity(), но, как правило, это плохая идея. Пользователь может оказаться в середине выполнения чего-то еще, когда внезапно ваша деятельность появляется на переднем плане. Иногда пользователь может считать вашу деятельность более важной, но не всегда. Вместо этого рассмотрите возможность использования Notification, чтобы пользователь знал, что в приложении есть что-то, что требует внимания пользователя.

Ответ 2

Сначала создайте в своей службе приватную переменную получателя. Затем создайте метод, чтобы установить этот результирующий приемник с помощью подключенного действия. Затем используйте AIDL для передачи обработчика результата в текущую службу из действия с помощью метода, который вы только что создали. Затем в службе используйте resultreceiver.send, если resultreceiver не null.

Несколько примеров, чтобы вы начали  http://lalit3686.blogspot.com/2012/06/how-to-update-activity-from-service.html?m=1

http://chrisrisner.com/31-Days-of-Android--Day-28 -Intents-Part-3 - Сервис-цели