2015-04-20 2 views
2

Кажется, что onNewIntent() моей MainActivity не вызывается, когда у меня есть еще один Activity, если я закрою второй Activity, он действительно называется просто прекрасным, это как и другой Activity, который находится сверху, блокирует сообщения? Оба Activity s устанавливаются SingleTop в манифесте, и я поставил Intent от уведомления:onNewIntent() не вызывается, когда есть другая активность сверху

Intent intent = new Intent(getApplicationContext(), MainActivity.class); 
intent.setAction(Intent.ACTION_MAIN); 
intent.addCategory(Intent.CATEGORY_LAUNCHER); 
PendingIntent pIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

Кто-нибудь знает, что может быть не так?

Спасибо!

+2

Если в течение существующей «Деятельности» видна другая «активность», первая будет приостановлена, а затем остановлена. Следовательно, никакой код в первой «Деятельности» не будет выполнен. Это стандарт для Android и жизненного цикла «Активность». – Squonk

+0

Итак, если бы я хотел вызвать функцию при нажатии на уведомление, и есть другие действия сверху, как бы я это сделал, не создавая новую активность? – eXistenZ

ответ

1

Возможно, вы уже искали google - есть много вопросов о том, почему onNewIntent не вызывается.

Это может зависеть от того, какую версию для Android вы проводите, но можете попробовать добавить флаг Intent.FLAG_ACTIVITY_SINGLE_TOP к своему намерению - даже если у вас есть это в вашем манифесте вместе с Intent.FLAG_ACTIVITY_CLEAR_TOP.

intent.setFlag (Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);

это удалит действия над вами, деятельность которых вы хотите запустить.

Но если вы намерены сохранить два действия живыми и переключаться между ними, посмотрите на android:taskAffinity и FLAG_ACTIVITY_NEW_TASK.

+0

Я попытался добавить Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP, но он не закрыл активность, которая находится сверху, она ничего не делает. Было бы хорошо, если бы я закрыл любые действия, которые находятся поверх основного. Любые идеи, почему это не сработало? – eXistenZ

+0

На самом деле это сработало хорошо, не уверен, почему это не первый раз, спасибо! – eXistenZ

+0

На самом деле, похоже, что это не работает все время, странно - если я нажимаю кнопку «домой», а затем нажимаю на уведомление, оно больше не очищает активность поверх нее, а просто выводит его на просмотр. – eXistenZ

1

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

+0

Он установлен в singleTop, но выглядит так, как указал Squonk, когда на нем есть еще одна активность, действие под ним не будет выполнять какой-либо код. – eXistenZ

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