Возврат к предыдущему приложению вместо домашнего экрана из уведомлений

У меня есть приложение, в котором есть действие, скажем, A., и я помещаю уведомление на панель уведомлений, которая запускает A. То есть, когда пользователь выбирает уведомление, действие A будет запущено. Но когда пользователь нажимает кнопку «Назад», система переходит на главный экран вместо предыдущего действия (возможно, другого приложения). Как я могу просто позволить системе завершить действие и вернуться к предыдущему действию вместо домашнего экрана?

Мой код для создания уведомления:

    Notification.Builder mBuilder = new Notification.Builder(this).setSmallIcon(R.drawable.icon).setContentText("title");
    Intent resultIntent = new Intent(this, ResultActivity.class);
    resultIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    PendingIntent pi = PendingIntent.getActivity(this, 0, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT);
    mBuilder.setContentIntent(pi);
    NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    mNotificationManager.notify(0, mBuilder.build());



Ответы (1)


Кажется, я нашел ответ, добавив следующие две строки:

resultIntent.setAction(Intent.ACTION_MAIN);
resultIntent.addCategory(Intent.CATEGORY_LAUNCHER);

и удалите эту строку:

resultIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

Но на самом деле я не понимаю, почему. Может ли кто-нибудь объяснить это или дать лучший ответ?

person Chris.Zou    schedule 08.09.2014
comment
FLAG_ACTIVITY_NEW_TASK создает новый задний стек с вашей активностью в корне. Когда пользователь отступает, он возвращается к лаунчеру. Без FLAG_ACTIVITY_NEW_TASK ваша активность будет добавлена ​​в верхнюю часть существующего заднего стека. - person Mike Playle; 10.09.2016