3

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

我的问题是,如果我在 B 中按下后退按钮,它会破坏 B 活动(调用 onDestroy)并返回到活动 A。我仍然想返回到活动 A,但不破坏 B,因为如果我再次启动 B,我必须在它完成所有工作之前再次等待(这很烦人)。这有可能吗?

谢谢你的帮助!

4

5 回答 5

5

您可以使用Fragments,但您真正想做的是缓存信息。否则,无论如何您都会重新加载设备旋转(除非您使用Fragments 和setRetainInstancetrue,但这可能会导致其他问题)。

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

于 2013-03-25T21:38:41.240 回答
2

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

我想说,如果 Android 想要,你不能阻止 B 被销毁(因为它由它来处理活动)。但是,您可以选择将所有长时间的初始化移到可以一直保留的第三类中。所以你应该让这个初始化阶段独立于你的 B 活动。

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

于 2013-03-25T21:35:04.270 回答
0

也许你可以使用AndroidFragments

于 2013-03-25T21:30:22.633 回答
0

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

于 2013-03-25T21:40:33.920 回答
0

当您按下返回按钮时,Activity b 被破坏。这就是安卓的工作方式。我不会尝试覆盖默认功能

一旦你从数据库中获取数据,你就可以缓存一些地方并加载它。

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

于 2013-03-25T21:40:46.880 回答