【发布时间】:2012-11-07 09:58:32
【问题描述】:
你能帮我解决我的问题吗?
我有 Activity1、Activity2。
Activity1 在 onCreate() 中创建 UI,然后在某个时刻用户使用 startActivityForResult() 启动 Activity2
内存不足的情况似乎很少见,但我遇到过一次,所以我想在以后防止它。我什至可以通过运行一些“硬”应用程序或游戏来重复这种情况。结果是 - 当我返回我的应用程序时,Activity2 被重新创建。然后当我按返回按钮返回 Activity1 时,它也会重新创建。我在这里有逻辑冲突。 Activity1 UI 在onCreate 中从零开始创建,同时在onActivityResult 中更新!
我该如何解决这个问题?在onCreate 中触发一些标志并在onActivityResult 中检查它?这对我有用,但我认为它不应该是这样。
我的手机有 Stock ROM,Android 2.3.5
更新:好的,具体问题,我有一个元素列表。它内置于onCreate()。离开 Activity2 我需要记住被点击元素的 id 以便稍后在onActivityResult() 中更新它。将其打包保存在onSaveInstanceState() 中不是问题。但!从onCreate() 的捆绑包中获取它是个坏主意,因为我没有什么要更新的!这里要说清楚的是伪代码:
onCreate()
{
elementId = getIdFromBundle();
if (elementId == null)
createNewListFromZero();
}
onSaveInstanceState()
{
putIdToBundle(elementId);
}
onActivityResult()
{
updateOnlyOneListElement(elementId);
}
所以我不能通过它的 id 更新元素,因为活动实际上被系统破坏了。我需要重建它。我连续拨打了onCreate(), onActivityResult()。问题是我应该如何在这两种方法之间共享逻辑以按正确的顺序创建\更新我的元素列表?
【问题讨论】:
-
您找到解决方案了吗?我也面临同样的问题!
标签: android activity-lifecycle