Наше приложение запускает событие для загрузки 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. Устройство с нуга с самым быстрым процессором из трех запускает службу только один раз, независимо от того, подключен ли отладчик.