0

Я пытаюсь разработать приложение для Android, состоящее из Activity и Service. Задание запускает процесс на службе неопределенной продолжительности, который будет закрыт из Activity. Не следует использовать подкласс IntentService, но напрямую Service. Контролируется onStartCommand и OnDestroy.Деятельность, обслуживание и какое общение между ними?

Мне, очевидно, необходимо передать информацию из Деятельности на службу: состояние службы и некоторые строки.

Я попытался использовать LocalBrodcastManager, но когда вы поворачиваете устройства или когда действие переходит в состояние onPause, сообщение будет потеряно. Я попытался следовать нескольким примерам, но с небольшим успехом. Это, в частности, я не мог завершить это из-за недостающей информации, очевидно, считающейся очевидной, но которая для меня не очевидна: https://developer.android.com/training/run-background-service/report-status.html

Затем я попытался использовать Messenger через IBinder (Example: Communication between Activity and Service using Messaging), но программа кажется немного сложной и я не могу соответствовать моим потребностям.

Что мне нужно - это запустить службу из моей активности (возможно, автоматически привязать?), В случае использования Messenger, Служба должна сигнализировать, что активность активна, тогда служба записывает некоторые точки через GPS LocationListener, записывает ее в файл и должен указать, снова активность, данные, которые записываются, размер файла и т. д.

Что вы рекомендуете использовать для передачи этой информации и можете ли вы предоставить мне пример?

+0

Вы можете настроить свое приложение так, чтобы изменение ориентации дисплея не убивало и не перезапускало действие. Это может быть самый простой способ решить вашу проблему. –

+0

Интересно, но что я должен использовать? Я думал, что это невозможно, и для этого было обязательно использовать savedInstanceState ... – Paolovip

+0

Просто объявите в манифесте, что ваша 'Activity' будет обрабатывать само изменение ориентации. Переопределите 'onConfigurationChanged()', и когда это вызвано, вы можете сбросить представление содержимого и/или изменить макет. –

ответ

1

Я нахожусь посреди учебника, объясняющего и сравнивающего множество разных подходов к IPC в Android, но так как он не готов и потому, что вам нужно легкое исправление, я рекомендую https://github.com/greenrobot/EventBus.

чувствовать себя также бесплатно смотреть в старом, но до сих пор соответствующего примера я и мои друзья сделали некоторое время назад здесь: https://github.com/RanNachmany/AndconLab

GOODLUCK.

+0

Большое спасибо. Ваш код ясен и очень хорошо написан, но слишком продвинут для моих реальных возможностей. На данный момент я понял только половину полного процесса. Я могу привязываться только к Сервису из своей деятельности, запускать ServiceConnection и получать сообщение в Службе. Теперь, я полагаю, я должен реализовать Messenger и в клиенте. Но на данный момент я должен изучить, как Handler действительно работает. :-) – Paolovip

+0

@Paolovip вы можете принять мой ответ? –

+0

Я бы, но я не знаю как. Как это делается? (Мне немного стыдно ...) – Paolovip

Смежные вопросы