Почему сервис не запускается - PullRequest
0 голосов
/ 15 апреля 2020

Я начинаю разработку для android, и у меня возникла проблема с услугами. Я провел много исследований по этому поводу, но не смог найти решение.

Я занимаюсь приложением, которое собирает информацию о метках RFID. Для этого я использую стороннее промежуточное ПО, которое обрабатывает соединение Bluetooth с RFID-ридером и другие события (такие как подключение, чтение, ошибки и т. Д. c). Итак, мое приложение создает широковещательный приемник, который обрабатывает все сообщения и намерения данных, отправленные промежуточным программным обеспечением. С этой частью все в порядке.

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

Intent intent = new Intent("com.supplier.middleware.runner");
intent.setPackage("com.supplier.middleware");
startService(intent);

В настоящее время я использую Asus Zenfone MAX M1 (ASUS_X00HD) с Android 8.1.0. В документации также описан способ остановить службу (которую я должен использовать при закрытии приложения), и намерение остановить службу работает. Итак, если я запустил промежуточное ПО вручную и попытался закрыть программно, он работает нормально.

Через несколько дней, но безуспешно пытаясь решить эту проблему, я протестировал свое приложение с Motorola Moto Maxx (что составляет Android). 6, я думаю) и с Samsung J1 (который Android 5.1.1) и обоими смартфонами работал нормально : когда я вызываю startService, появляется элемент уведомления; когда я вызываю stopService, элемент уведомления исчезает.

Я также пытался использовать "startForegroundService" из-за Android 8, но также не увенчался успехом.

Есть ли способ "отслеживать" вызовы startService, поэтому, возможно, я смогу отследить любую ошибку? Я делаю что-то не так - или, скорее, я не делаю что-то важное?

1 Ответ

1 голос
/ 15 апреля 2020

В Android 8.0 ограничение фонового обслуживания. https://developer.android.com/about/versions/oreo/background.html Вы можете использовать JobIntentService вместо службы намерений. Это может работать.

...