2013-09-21 2 views
2

Мое уведомление должно начать действие или просто показать действие, если оно уже открыто (на экране). Вместо этого уведомление уничтожает действие, а затем создает его снова, даже если действие уже находится на экране.Уведомление об уничтожении и создании существующей деятельности

Я искал решения, и они говорят, что добавили android:launchMode="singleTop" к активности в манифесте, но это не имеет никакого эффекта, активность все еще уничтожается и воссоздается всякий раз, когда пользователь нажимает на уведомление.

Это как уведомление сказал, чтобы начать деятельность по щелчку:

Intent resultIntent = new Intent(this, MyActivity.class); 
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this); 
stackBuilder.addParentStack(MyActivity.class); 
stackBuilder.addNextIntent(resultIntent); 
PendingIntent resultPendingIntent = 
    stackBuilder.getPendingIntent(0,PendingIntent.FLAG_UPDATE_CURRENT); 
mBuilder.setContentIntent(resultPendingIntent); 
// mBuilder is NotificationCompat.Builder() 

ответ

-1

Это не может быть. В документации четко указано: «Если экземпляр действия уже существует в верхней части целевой задачи, система направляет намерение этому экземпляру посредством вызова его метода onNewIntent(), а не создает новый экземпляр действия». Я использовал это снова и снова. Дважды проверьте, были ли вы установить MyActivitylaunchMode в singleTop

+0

у меня есть. Я имею в виду двойную проверку. Интересно, имеет ли это какое-то отношение к messing с TaskStackBuilder (он находится на сайте Android dev как способ заставить кнопку «Назад» привести к родительской активности приложения, которое открывается уведомление) – PFort

+0

Я подтверждаю, что это поведение существует, FFS, что происходит в Android, как всегда. Раньше singleTop работал отлично в Android –

3

Заменить строку

PendingIntent resultPendingIntent = 
stackBuilder.getPendingIntent(0,PendingIntent.FLAG_UPDATE_CURRENT); 

с

PendingIntent resultPendingIntent = 
stackBuilder.getPendingIntent(0,Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
+0

Это безумие! И это делает работу. –

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