Я думаю, это поведение, которое вы хотите:
singleTask сбрасывает стек на домашней прессе по какой-то отсталой причине, которую я не понимаю.
Вместо этого решение состоит в том, чтобы не использовать singleTask и использовать standard или singleTop вместо активности запуска (хотя на сегодняшний день я пробовал только с singleTop).
Поскольку приложения имеют сходство друг с другом, запускается такое действие:
Intent launchIntent = context.getPackageManager().getLaunchIntentForPackage(packageName);
if(launchIntent!=null) {
launchIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
}
приведет к тому, что ваш стек активности снова появится, как и раньше, без запуска нового действия со старым (что раньше было моей главной проблемой). Флаги являются важными :
FLAG_ACTIVITY_NEW_TASK Добавлено на уровне API 1
Если установлено, это действие станет началом новой задачи на этом
стек истории. Задача (от действия, которое запустило его до следующего
действие задачи) определяет элементарную группу действий, которые пользователь может
перейти к. Задачи могут быть перемещены на передний план и фон; все
действия внутри конкретной задачи всегда остаются неизменными
порядок. См. Задачи и Back Stack для получения дополнительной информации о задачах.
Этот флаг обычно используется действиями, которые хотят представить
Поведение стиля запуска: они дают пользователю список отдельных
вещи, которые можно сделать, которые в противном случае работают совершенно независимо
деятельность запуска их.
При использовании этого флага, если задача уже запущена для действия
вы сейчас начинаете, тогда новое действие не начнется;
вместо этого текущая задача будет просто перенесена на
экран с состоянием, в котором он был последним. См. FLAG_ACTIVITY_MULTIPLE_TASK
для флага, чтобы отключить это поведение.
Этот флаг нельзя использовать, когда вызывающая сторона запрашивает результат из
запускаемая деятельность.
И
FLAG_ACTIVITY_RESET_TASK_IF_NEEDED Добавлено на уровне API 1
Если установлено, и это действие либо запускается в новой задаче, либо
доведя до вершины существующую задачу, то она будет запущена как
входная дверь задачи. Это приведет к применению любого
сходство должно было иметь эту задачу в надлежащем состоянии (либо перемещение
действия или от него), или просто сбросить эту задачу на
исходное состояние при необходимости.
Без них запущенная активность будет просто перенесена поверх старого стека или какого-либо другого нежелательного поведения (в данном случае, конечно)
Я считаю, что проблему с неполучением последней версии намерения можно решить следующим образом (из моей головы):
@Override
public void onActivityReenter (int resultCode, Intent data) {
onNewIntent(data);
}
Попробуйте!