我有两个活动 - 活动A启动活动B.然后活动B从数据库加载一些东西,并可视化数据。完全初始化B中的所有内容需要一些时间(5-10秒)。
我的问题是,如果我按下B中的后退按钮,它会销毁B活动(调用onDestroy)并返回活动A.我仍然想要返回活动A,但是而不会破坏B ,因为如果我再次启动B,我必须再次等待所有的东西(这很烦人)。这有可能吗?
感谢您的帮助!
答案 0 :(得分:5)
您可以使用Fragment
,但您真正想要做的是缓存信息。否则,无论如何你都会重新加载设备轮换(除非你使用Fragment
和setRetainInstance
为true,但这会引起其他麻烦。)
我会在活动B的CursorLoader
上使用onCreate
。 onLoadFinished
您缓存结果并设置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。查看保存缓存文件下的主题。