1

В MainActivity в моем приложении есть launchMode из singleTop, определенных в файле манифеста. Всякий раз, когда я нажимаю уведомление, моя MainActivity воссоздается и старый экземпляр уничтожается. MainActivity видна и на переднем плане, когда нажимается уведомление, поэтому я предполагаю, что намерение будет передано текущему экземпляру onNewIntent(), но этого никогда не произойдет. Вот цель создать:Действия с launchMode singleTop или singleTask всегда воссозданы

Intent resultIntent = new Intent(App.getInstance(), MainActivity.class); 
TaskStackBuilder stackBuilder = TaskStackBuilder.create(App.getInstance()); 
stackBuilder.addNextIntent(resultIntent); 
PendingIntent resultPendingIntent = PendingIntent.getActivity(App.getInstance(), 0, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT); 

Я иногда добавить FLAG_ACTIVITY_CLEAR_TOP и FLAG_ACTIVITY_SINGLE_TOP намерению так:

resultIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); 

Я также попытался с помощью singleTask launchMode также с теми флагами и то же поведение произошло. Может ли кто-нибудь дать представление о таком поведении?

ответ

1

Вам не нужно создавать новые TaskStackBuilder. Попробуйте умысел, который действует, как вы хотите, чтобы перезапустить приложение, но singleTop будет держать его от делать так:

Intent resultIntent = new Intent(App.getInstance(), MainActivity.class); 
resultIntent.setAction(Intent.ACTION_MAIN); 
resultIntent.addCategory(Intent.CATEGORY_LAUNCHER); 

PendingIntent resultPendingIntent = PendingIntent.getActivity(App.getInstance(), 0, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT); 
+0

спасибо, это работает. Мне также не нужны флаги, установленные для намерения. –

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