让我确保我有这个权利:活动 A 是你的第一个,B 你的第二个。您需要 A 上的一个按钮来触发两件事:异步数据加载和 B 在 Activity 堆栈上的推送。这一切都很好。
在“我需要什么”中,您使用动词短语“在后台更新视图”。这是不可能的——您只能更新主 UI 线程上的视图。此外,一旦onPause()调用了 A(由 B 的推送触发),您确实应该认为 A 不可用于处理。你可以做的是在后台加载数据,而 B 做它的事情,然后 AonResume()可以适当地更新它的 UI。
如果我错了,并且您在 B 出现时让 A 做一些 UI 工作,那么对您有好处,但是如果您作为一个块的处理时间太长,那么我想您将不得不将它分解成更小的块并一点一点地安排它们,以免干扰用户对 B. 的体验。
更新
我不确定您将如何在 Activity X 的范围内完成使用 Activity Y 的 UI 资源,尤其是在 Y 尚未完成的情况下onCreate()d。我不知道是否可以在活动之间共享布局资源,尽管可能。
您在上面发布的链接得到了它 - 我认为有关使用Handler类的答案是您解决方案的一部分。另外,请阅读Looper和Designing for Responsiveness。我认为,简而言之,您将希望在主线程上实现一个处理程序,它允许您以 100-200 毫秒的小块更新 UI(如Responsiveness中所建议的那样),并以高粒度向该处理程序发送消息在后台线程上处理少量数据。例如,如果您正在更新 a ListView,您应该能够一次膨胀一行。同样,如果您将图像添加到GridView. 另外,考虑预-加载资源,但不显示它们,这样您可以在时间紧迫时花更少的时间进行膨胀。
这是我目前的想法,但我将其标记为最喜欢的,因为我认为我必须在几周内做类似的事情。让我们了解什么对您有用。祝你好运!