У меня возникла неприятная проблема, которую я не знаю, как правильно решить.
Сценарий:
MainActivity имеет метод handleIncomingIntent()
Этот метод анализирует Extras, поступающие во входящем намерении (для службы или широковещательного приемника), и открывает дочерние действия на основе данных намерения. Таким образом, когда входящий Intent имеет данные типа A, он будет startActivity (ActivityA.class), если тип B, то startActivity (ActivityB.class), если нет данных, он останется в MainActivity.
Проблема в том, что когда на устройстве недостаточно памяти, MainActivity уничтожается, а в ActivityA или ActivityB.
Поэтому, когда используется BackButton - MainActivity восстанавливается, и его входящее намерение восстанавливается в том же состоянии, что и до его обработки, несмотря на то, что я делаю incomingIntent.removeExtras(KEY) в конце моего метода handleIncomingIntent(). Итак, результат таков: он снова запускает дочернюю активность, и это цикл!
Я понимаю, что я могу сохранить некоторый флаг isIntentConsumed в памяти внутри onDestroy(), а затем прочитать его restoreSavedState() и использовать его для отклонения намерения, поскольку оно уже использовано.
Я просто чувствую, что должен быть лучший способ, чем "пластырь", который я только что описал.
С уважением, Павел