Android onBackPressed-避免破坏活动

Android onBackPressed-避免破坏活动,android,android-activity,activity-lifecycle,Android,Android Activity,Activity Lifecycle,我有两个活动-活动A启动活动B。然后活动B从数据库加载一些内容,并可视化数据。完全初始化B中的所有内容需要一些时间(5-10秒) 我的问题是,如果我按下B中的“后退”按钮,它会破坏B活动(调用onDestroy)并返回到活动A。我仍然希望返回到活动A,但不破坏B,因为如果我再次启动B,我必须再次等待,然后它才会执行所有操作(这很烦人)。这有可能吗 谢谢你的帮助 也许你可以使用我认为你没有从正确的角度看待问题 我要说的是,如果安卓愿意的话,你不能阻止B被破坏(因为由它来处理活动)。 但是,您可以选

我有两个活动-活动A启动活动B。然后活动B从数据库加载一些内容,并可视化数据。完全初始化B中的所有内容需要一些时间(5-10秒)

我的问题是,如果我按下B中的“后退”按钮,它会破坏B活动(调用onDestroy)并返回到活动A。我仍然希望返回到活动A,但不破坏B,因为如果我再次启动B,我必须再次等待,然后它才会执行所有操作(这很烦人)。这有可能吗


谢谢你的帮助

也许你可以使用

我认为你没有从正确的角度看待问题

我要说的是,如果安卓愿意的话,你不能阻止B被破坏(因为由它来处理活动)。 但是,您可以选择将所有长初始化移动到第三个类中,该类可以一直保持。所以你应该让这个初始阶段独立于你的B活动


我认为将所有这些放在应用程序类的属性中是一个好主意。

您可以使用
Fragment
s,但您真正想要做的是缓存信息。否则,您将在设备旋转时重新加载(除非您使用
Fragment
s并将
setRetainInstance
设置为true,但这可能会导致其他问题)


我会在活动B的
onCreate
上使用
CursorLoader
onLoadFinished
缓存结果并设置UI。在随后的加载中,结果将被缓存,您将放弃加载程序。此外,如果基础数据库结果发生更改,使用
游标加载程序将向您发出警告。

使用存储键值对,然后使用
GetSharedReferences()
检索它们。

当您按下后退按钮时,活动b将被销毁。这就是安卓的工作原理。我不会试图覆盖默认功能

一旦您从数据库中获取数据,您就可以将数据缓存到某个位置并将其加载


。查看“保存缓存文件”下的主题。

这是正确的答案,作为@Orabîg的主题之一,您将永远无法要求android使某个活动保持活动状态。Android可以在内存紧张的情况下对任何活动进行垃圾收集。谢谢,我来看看片段。我知道我不能强迫android不停止活动。我只是希望当你回到A,在你想再回到B的几分钟后,一般情况下……同样,片段甚至可能不起作用,如果它们起作用,它们会带来一些你应该非常清楚的微妙之处。看,我更倾向于建议你查看装载机。此外,你还需要处理屏幕方向。即使在这种情况下,活动也会被破坏和重建。@Raghunandan:谢谢,我知道这一点。但是我不希望方向经常改变,我关心的是一般情况..谢谢,但我不想管理第三个类,在那里我会临时保存初始化的数据,因为有更多的B实例具有不同的数据(并且数据会定期更新),所以这将是相当复杂的…按照您的意愿执行,但我认为你不会有很多选择。我不明白你的论点解释了你不能使用外部类。我希望你能找到最好的解决办法。