Oreo запускает сервис STICKY в фоновом режиме - PullRequest
0 голосов
/ 07 мая 2019

Согласно последним изменениям, произошедшим в версии Android Oreo и выше, Службам больше не разрешается работать в фоновом режиме. Вам придется обратиться к службе переднего плана, если вы хотите запустить службу, когда приложение не запущено. Означает ли это также, что START_STICKY больше не будет работать?

Я попробовал следующий код

 public class MyService extends Service {
  private static final String TAG = "MyService";

@Override
public void onCreate() {
    super.onCreate();
    Log.d(TAG, "onCreate: ");
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    Log.d(TAG, "onStartCommand: ");
   new Thread(new Runnable() {
       @Override
       public void run() {
           for (int i = 0; i < 10; i++) {
               Log.d(TAG, "input : " + i);
               SystemClock.sleep(1000);
           }
       }
   }).start();
    Log.d(TAG, "onStartCommand: returning START STICKY");
    return START_STICKY;
}

@Override
public void onDestroy() {
    Log.d(TAG, "onDestroy: ");
    super.onDestroy();
  }
 }

Это простой сервис, который создает поток внутри и печатает числа.

Я запускаю эту службу (на устройстве ниже Oreo), и как только служба начинает печатать числа, я закрываю приложение. Теперь я вижу, что служба перезапускается через пару секунд, что ожидается.

Теперь я запускаю тот же код на устройстве Oreo. Но там также, после принудительного выхода из приложения, сервис перезапускается так же, как на устройствах ниже Oreo. Итак, означает ли это, что START_STICKY перезапустит службу, и все равно она будет выполняться беззвучно даже в Orero? Ограничение только для запуска нового Сервиса из фона?

1 Ответ

0 голосов
/ 07 мая 2019

Если ваше приложение было на переднем плане, оно временно находится в белом списке и может запускать службы без ограничений.

Не указано, как долго оно длится, но когда ваше приложение будет помещено в фоновый режим, оно будет удалено из этого белого списка и больше не сможет запускать службы не переднего плана.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...