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