Android Nougat: onHandleIntent вызывается один раз - PullRequest
0 голосов
/ 02 мая 2018

Наше приложение запускает событие для загрузки RSS-канала и отображения мультимедиа при нажатии кнопки.

IntentService запускается с использованием следующего кода:

Messenger messenger = new Messenger(new IncomingMessageHandler());
Intent intent = new Intent(getApplicationContext(), RssReaderIntentService.class);

intent.putExtra("Messenger", messenger);

startService(intent);

IntentService также указан в AndroidManifest.xml ниже:

<service android:name=".services.RssReaderIntentService" android:exported="false" />

И метод onHandleIntent ниже:

@Override
protected void onHandleIntent(Intent workIntent)
{
    LOGGER.trace("onHandleIntent");

    try {
        Messenger remoteMessenger = workIntent.getParcelableExtra("Messenger");
        if (bindData(remoteMessenger))
            readRss();
    }
    catch (Exception e) {
        e.printStackTrace();
    }

    stopSelf();
}

Когда служба запускается в первый раз, она работает правильно и вызывает onHandleIntent , однако, когда службы снова запускаются, она никогда не достигает onHandleIntent. Единственный метод, который вызывается is onStartCommand.

Мне было любопытно, связано ли это с проблемой Android Nougat и Android KitKat (приложение нормально работает на KitKat). Я исследовал износ и любые возможные изменения, но не нашел ничего, что могло бы вызвать эту проблему.

EDIT Приложение вызывает onHandleIntent правильно во время отладки, но не когда отладчик отключен.

РЕДАКТИРОВАТЬ # 2 У нас есть три сценария, в которых приложение работает по-разному. 1. Устройство работает под управлением kitkat с более медленным процессором, чем два других устройства, приложение работает отлично и так, как задумано. 2. Устройство работает с нуга с более быстрым процессором, чем первое устройство, приложение запускает службу только один раз, когда отладчик не подключен, но когда отладчик подключен, он постоянно запускает службу. 3. Устройство с нуга с самым быстрым процессором из трех запускает службу только один раз, независимо от того, подключен ли отладчик.

...