我有两个活动 - 活动 A 启动活动 B。然后活动 B 从数据库加载一些东西,并可视化数据。完全初始化 B 中的所有内容需要一些时间(5-10 秒)。
我的问题是,如果我在 B 中按下后退按钮,它会破坏 B 活动(调用 onDestroy)并返回到活动 A。我仍然想返回到活动 A,但不破坏 B,因为如果我再次启动 B,我必须在它完成所有工作之前再次等待(这很烦人)。这有可能吗?
谢谢你的帮助!
我有两个活动 - 活动 A 启动活动 B。然后活动 B 从数据库加载一些东西,并可视化数据。完全初始化 B 中的所有内容需要一些时间(5-10 秒)。
我的问题是,如果我在 B 中按下后退按钮,它会破坏 B 活动(调用 onDestroy)并返回到活动 A。我仍然想返回到活动 A,但不破坏 B,因为如果我再次启动 B,我必须在它完成所有工作之前再次等待(这很烦人)。这有可能吗?
谢谢你的帮助!
您可以使用Fragment
s,但您真正想做的是缓存信息。否则,无论如何您都会重新加载设备旋转(除非您使用Fragment
s 和setRetainInstance
true,但这可能会导致其他问题)。
我会CursorLoader
在活动 B 上使用 a onCreate
。onLoadFinished
您缓存结果并设置您的 UI。在随后的加载中,结果被缓存并且您放弃加载器。CursorLoader
更重要的是,如果底层数据库结果发生变化,使用会提醒您。
我认为您没有从正确的角度看待问题。
我想说,如果 Android 想要,你不能阻止 B 被销毁(因为它由它来处理活动)。但是,您可以选择将所有长时间的初始化移到可以一直保留的第三类中。所以你应该让这个初始化阶段独立于你的 B 活动。
我认为将所有这些都放在 Application 类的属性中是个好主意。
也许你可以使用AndroidFragments
使用SharedPreferences存储键值对,然后用于getSharedPreferences()
检索它们。
当您按下返回按钮时,Activity b 被破坏。这就是安卓的工作方式。我不会尝试覆盖默认功能
一旦你从数据库中获取数据,你就可以缓存一些地方并加载它。
http://developer.android.com/guide/topics/data/data-storage.html。检查保存缓存文件下的主题。