Активность с launchMode singleTop или singleTask всегда воссоздается
MainActivity в моем приложении имеет launchMode
из singleTop
определено в файле манифеста. Всякий раз, когда я нажимаю на уведомление, моя MainActivity воссоздается, а старый экземпляр уничтожается. MainActivity видна и на переднем плане при нажатии на уведомление, поэтому я предполагаю, что намерение будет передано текущему экземпляру onNewIntent()
, но этого никогда не происходит. Вот намерение, которое я создаю:
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);