【问题标题】:startActivity is always calling onDestroy on the original activitystartActivity 总是在原始活动上调用 onDestroy
【发布时间】:2013-07-15 21:48:50
【问题描述】:

当从我的活动中调用 startActivity(Intent intent) 时,总是在其上调用 onDestroy() 方法,因此我丢失了片段状态等...

我的理解是 onStop 应该被调用,而 onDestroy 可以或不能被调用。但我的经验是,原始活动总是被破坏。

我了解,如果我有一个带有 listView、适配器等的活动...Android 不会仅仅因为我在此之上推送另一个活动,就希望我调整适配器的状态,对吗?

我说的对吗?什么可能触发了这种行为?

谢谢

【问题讨论】:

  • 您是直接在设备上进行测试吗?如果是这样,也许您已选中始终销毁活动的选项?
  • 我正在设备中进行测试,是的。不知道那个选项!我现在就检查一下。
  • 在我的 Galaxy s2 上,它的设置 > 开发者选项 > 自下而上,不要保留活动,也许你的设备上会有类似的东西。
  • 你明白了!不敢相信我花了 1:30 试图解决这个问题。如果您回答问题,我会将其标记为已为您选中。此外,由于活动仍有可能被破坏,因此仍然保存状态(适配器的内容等)是一种好习惯吗?或者“破坏”很可能不会发生,担心这是没有意义的?非常感谢!
  • 如果您的数据对用户体验至关重要,那么我总是会保存状态,但它需要在付出多少努力和您对用户造成多少损失之间进行权衡。您不知道他们正在运行什么,因此您不知道他们的操作系统是否需要您的应用占用的资源。

标签: android


【解决方案1】:

在某些设备(Galaxy S2 等)上,有一个设置可能会导致在调试时破坏活动。您可以在以下位置找到:

settings > developer options > go down to the bottom under apps section > 

Do not keep activities

取消选中此选项,以停止活动在您离开时始终被销毁。

【讨论】:

  • 天啊,你绝对拯救了我的一天!如果它有一个单独的“开发者选项”部分,我认为它几乎可以在所有三星设备上使用。
猜你喜欢
  • 1970-01-01
  • 2013-11-05
  • 1970-01-01
  • 2020-09-01
  • 2013-11-22
  • 2012-02-26
  • 1970-01-01
  • 2021-11-10
  • 1970-01-01
相关资源
最近更新 更多