Я запускаю службу из активности переднего плана следующим образом:
Intent i = new Intent();
i.setComponent(new ComponentName("com.xxx.yyy", "com.xxx.yyy.SyncService"));
ComponentName c = ctx.startService(i);
Но я получаю это исключение
Caused by: java.lang.IllegalStateException: Not allowed to start service Intent { ... }: app is in background uid NULL
Я вызываю startService из своего приложения, которое находится на переднем плане, поэтому ограничения Пределы здесь не применяются.
ТЕМ НЕ МЕНИЕ
Если я запускаю вручную другое приложение, которое содержит службу, и помещаю ее в фоновый режим, а затем из моего приложения вызываю службу, работает нормально. Но только если другое приложение работает в фоновом режиме.
Пожалуйста, добавьте полный лог
Ограничение фона. Если вы не используете startForegroundService(), на переднем плане в данный момент должно находиться приложение, в котором есть служба, а не приложение, вызывающее startService().
Я тебе уже дважды говорил.
@TheWanderer Хорошо, но почему, когда я запускаю приложение, в котором есть служба, а затем снова открываю свое приложение (приложение службы переходит в фоновый режим), чтобы вызвать эту службу, все работает нормально? Сервисное приложение все еще работает в фоновом режиме.
Это не. У вас запущено действие. Оставьте действие в «Недавних» на некоторое время, и оно перейдет в фоновое состояние.
@TheWanderer Я сбит с толку. Когда вы нажимаете кнопку «Домой», приложение / действие переходит в фоновый режим, верно?
Не сразу. Есть разница между визуальным фоном и фоном процесса.
@TheWanderer, ладно, спасибо. Есть ли ссылка, чтобы прочитать о визуальном фоне и фоне процесса?
Здесь дан ответ на тот же вопрос (stackoverflow.com/questions/46445265/…)
Ограничение относится к приложению, в котором есть Служба, а не к приложению, запускающему Службу.