【发布时间】:2015-03-19 18:10:48
【问题描述】:
我遇到了一个令人不快的问题,我不知道如何正确解决。
场景:
MainActivity 有一个方法 handleIncomingIntent()
此方法解析传入意图(用于服务或广播接收器)中的 Extras,并根据意图数据打开子活动。 因此,当传入的 Intent 有 A 类型的数据时,它将 startActivity(ActivityA.class),如果是 B 类型,则 startActivity(ActivityB.class),如果没有数据,它将留在 MainActivity
问题是当设备内存不足时,MainActivity 被破坏,而在 ActivityA 或 ActivityB 中。
因此,当使用 BackButton 时 - MainActivity 被恢复并且它的传入 Intent 恢复到与处理它之前相同的状态,尽管事实上我在我的 handleIncomingIntent() 方法的末尾执行了incomingIntent.removeExtras(KEY)。所以结果是——它再次启动了 Child Activity,它是一个循环!
我意识到我可以将一些 isIntentConsumed 标志存储到 onDestroy() 内部的内存中,然后读取它 restoreSavedState() 并使用它来解除意图,因为它已经被消耗了。
我只是觉得肯定有比我刚才描述的“创可贴”更好的方法。
亲切的问候, 帕维尔
【问题讨论】:
标签: java android android-intent android-activity destroy