Открытие нескольких задач Android с одной и той же корневой активностью
Я пытаюсь начать намерение с Main2Activity в новой (отдельной) задаче (т. Е. Отдельном заднем стеке и отдельном экземпляре на экране недавних сообщений). Я понял, что это нужно сделать, добавив Intent.FLAG_ACTIVITY_NEW_TASK
а также Intent.FLAG_ACTIVITY_MULTIPLE_TASK
флаги намерений:
Intent intent = new Intent(this, Main2Activity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
startActivity(intent);
Но это работает только если я установил (в манифесте) Main2Activity's android:taskAffinity
к отличному от значения по умолчанию (т.е. отличному от соответствия заданию текущего действия).
Проблема в том, что я хочу иметь возможность создавать еще одну новую задачу с той же активностью более одного раза.
Пример:
В приложении Gmail для Android вы можете нажать кнопку "Создать" несколько раз, и каждый раз он создает "новый экземпляр" композитора. Я хотел бы добиться точно такого же поведения.
Любая подсказка?
Большое спасибо.
2 ответа
Итак, я думаю, что я только что понял это.
Заменил флаг Intent.FLAG_ACTIVITY_NEW_TASK
с Intent.FLAG_ACTIVITY_NEW_DOCUMENT
и, кажется, работает нормально.
примечание: этот флаг требует уровня API>= 21
Вместо использования
Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK
Вы должны использовать только
Intent.FLAG_ACTIVITY_MULTIPLE_TASK
потому что документы говорят, чтоFLAG_ACTIVITY_NEW_TASK
выводит старую задачу на передний план, если она уже запущена, и создает новую задачу, только если она не запущена.