2015-03-28 6 views
2

У меня есть уведомление Я настраиваюonNewIntent не вызывается - только каждый второй раз?

Intent intent = new Intent(ctx, MainActivity.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_NO_HISTORY); 

PendingIntent pi = PendingIntent.getActivity(ctx, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
mBuilder.setContentIntent(pi); 

mNotificationManager.notify(MainActivity.NOTIFICATION_RESULT, mBuilder.build()); 

Когда я получу уведомление, то MainActivity.onNewIntent() только вызывался каждый второй раз по какой-то причине. У меня там есть протокол отладки, и буквально каждый второй раз журнал не запускается.

Любые мысли?

ответ

1

Я не уверен, что ваши требования, но onNewIntent специально объявить в docs, что

Это называется для деятельности, которые устанавливают launchMode в «SingleTop» в их пакет, или если клиент используется флаг FLAG_ACTIVITY_SINGLE_TOP при вызове startActivity (Intent). В любом случае, когда активность повторно запускается в верхней части стека действий вместо нового экземпляра запускающего действия, onNewIntent() будет называться в существующем экземпляре с намерением, который использовался для перезапуск это.

Поскольку вы не используете SINGLE_TOP флаг, поведение может быть непоследовательным.

В любом случае, onNewIntent Целью является отправить новое намерение для уже запущенной операции. Итак, если ваша активность не запущена, и вы нажимаете на уведомление для ее запуска, вы не получите звонок по адресу onNewIntent. Но вы получите звонок по адресу onCreate, а затем onResume. Во второй раз, когда вы нажимаете уведомление, действие должно быть запущено, и вместо того, чтобы получать onCreate, вы получаете onNewIntent.

Чтобы проверить это, добавьте журналы OnCreate и onNewIntent.

+0

Awesome, спасибо! singleTop это исправить :) – Greg

Смежные вопросы