Я пишу свою першу заявку на Android і намагаюся зайнятись спілкуванням між службами та діяльністю. У мене є сервіс, який запускатиметься у фоновому режимі і робитиме GPS та часовий журнал. У мене буде діяльність, яка буде використовуватися для запуску та припинення Служби.
Отже, спочатку мені потрібно мати можливість з'ясувати, чи працює служба при запуску Діяльності. Тут є деякі інші питання, тому я думаю, що я можу це зрозуміти (але не соромтесь запропонувати пораду).
Моя реальна проблема: якщо Діяльність запущена і Служба запущена, мені потрібен спосіб для сервісу надсилати повідомлення в Активність. Прості рядки та цілі числа на даний момент - здебільшого повідомлення про стан. Повідомлення не траплятимуться регулярно, тому я не думаю, що опитування послуги - це хороший шлях, якщо є інший шлях. Я хочу цього спілкування лише тоді, коли діяльність розпочато користувачем - я не хочу запускати діяльність із Сервісу. Іншими словами, якщо ви запускаєте Діяльність, і Служба працює, ви побачите деякі повідомлення статусу в інтерфейсі активності, коли трапиться щось цікаве. Якщо не запустити Діяльність, ви не побачите цих повідомлень (вони не такі цікаві).
Схоже, я маю змогу визначити, чи працює служба, і якщо так, додайте Активність як слухача. Потім видаліть Активність як слухача, коли Дія призупиняється або зупиняється. Це насправді можливо? Єдиний спосіб, з якого я можу це зробити, - це активність реалізувати Parcelable та створити AIDL-файл, щоб я міг передати його через віддалений інтерфейс Служби. Це здається надмірним вбивством, і я поняття не маю, як Діяльність повинна реалізовувати writeToParcel () / readFromParcel ().
Чи є простіший чи кращий спосіб? Дякуємо за будь-яку допомогу.
Редагувати:
Для всіх, хто зацікавився цим пізніше, у зразку каталогу є приклад коду від Google для обробки цього через AIDL: /apis/app/RemoteService.java
busy-wait
здійснювати діяльність? Можете пояснити, будь ласка?