onBackPressed - 避免破坏活动

时间:2013-03-25 21:25:55

标签: android android-activity activity-lifecycle

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

我的问题是,如果我按下B中的后退按钮,它会销毁B活动(调用onDestroy)并返回活动A.我仍然想要返回活动A,但是而不会破坏B ,因为如果我再次启动B,我必须再次等待所有的东西(这很烦人)。这有可能吗?

感谢您的帮助!

5 个答案:

答案 0 :(得分:5)

您可以使用Fragment,但您真正想要做的是缓存信息。否则,无论如何你都会重新加载设备轮换(除非你使用FragmentsetRetainInstance为true,但这会引起其他麻烦。)

我会在活动B的CursorLoader上使用onCreateonLoadFinished您缓存结果并设置UI。在后续加载时,结果将被缓存,您放弃加载器。更重要的是,如果基础数据库结果发生变化,使用CursorLoader将提醒您。

答案 1 :(得分:2)

我认为你从正确的角度看不出问题。

我会说如果Android想要你不能阻止B被破坏(因为它取决于它来处理活动)。 但是,您可以选择在第三类中移动所有长时间的初始化,这可以一直持久化。因此,您应该使此初始阶段与B活动无关。

我认为将所有这些放在Application类的属性中是个好主意。

答案 2 :(得分:0)

也许你可以使用AndroidFragments

答案 3 :(得分:0)

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

答案 4 :(得分:0)

按下后退按钮后,活动b被销毁。这是android的工作原理。我不会尝试覆盖默认功能

从数据库中获取数据后,您可以缓存某些位置并加载它。

http://developer.android.com/guide/topics/data/data-storage.html。查看保存缓存文件下的主题。