Я пишу свое первое приложение для Android и пытаюсь разобраться в связи между службами и действиями. У меня есть служба, которая будет работать в фоновом режиме и вести журнал на основе GPS и времени. У меня будет действие, которое будет использоваться для запуска и остановки службы.
Итак, сначала мне нужно выяснить, работает ли Служба при запуске Activity. Здесь есть еще несколько вопросов по этому поводу, так что я думаю, что смогу в этом разобраться (но не стесняйтесь давать советы).
Моя настоящая проблема: если Activity запущена, а служба запущена, мне нужен способ для службы отправлять сообщения в Activity. На данный момент простые строки и целые числа - в основном сообщения о состоянии. Сообщения не будут поступать регулярно, поэтому я не думаю, что опрос службы - хороший способ, если есть другой способ. Мне нужно это общение только тогда, когда действие было запущено пользователем - я не хочу запускать действие из службы. Другими словами, если вы запустите Activity, а служба запущена, вы увидите некоторые сообщения о состоянии в пользовательском интерфейсе Activity, когда произойдет что-то интересное. Если вы не запустите Activity, вы не увидите этих сообщений (они не так уж интересны).
Похоже, я смогу определить, запущена ли Служба, и если да, то добавить Activity в качестве слушателя. Затем удалите Activity в качестве слушателя, когда Activity приостанавливается или останавливается. Это вообще возможно? Единственный способ, которым я могу это сделать, - это заставить Activity реализовать Parcelable и создать файл AIDL, чтобы я мог передать его через удаленный интерфейс службы. Это кажется излишним, и я понятия не имею, как Activity должна реализовывать writeToParcel () / readFromParcel ().
Есть способ лучше или проще? Спасибо за любую помощь.
РЕДАКТИРОВАТЬ:
Для тех, кто позже заинтересуется этим, есть образец кода от Google для обработки этого через AIDL в каталоге образцов: /apis/app/RemoteService.java