0

如何在两个活动之间传输数据,而不实际移动到该活动?场景如下:

ActivityA 是启动画面。在显示初始屏幕时,在 type 的背景中生成了一些数据ArrayList。加载此数据后,我需要启动ActivityB(假设是登录屏幕),在此之前我需要将数据传输到ActivityC。我知道我可以PutExtras用于传输数据,但这不会运行目标,Activity而是只发送数据?

谢谢

该应用程序的完整流程如下:

ActivityA(启动屏幕)--> ActivityB(登录屏幕)--> ActivityD(一些用户界面和按钮)--> ActivityC(应该能够加载启动屏幕中生成的数据的活动Button)。

4

2 回答 2

2

我认为您没有完全了解 Activity 和应用程序的生命周期。

经验法则,总是只有一个活动,(这是最糟糕的情况,当你回到它时必须重新创建每个活动)目前可见的一个。你不能做一些事情,比如开始活动,但还没有显示它或类似的事情。

如果您有昂贵的任务要做,比如下载数据,请在 AsyncTask 中执行

  • 如果在您进入和离开活动 A 时必须开始和完成此任务,请使用片段
  • 如果它必须完成一次你开始活动 A 是否仍然存在或它已经被销毁使用服务

地方 你可以存储这个加载的数据,以便以后可以在加载器(加载器是可选的,但非常好)或SharedPreferences的帮助下从任何 Activity 数据库轻松访问它。

于 2013-05-23T20:08:55.570 回答
0

如果您想将数据传递给正在运行的活动,而不是启动该活动的新实例,您只需要在您的意图上设置标志。例如:

Intent i = new Intent()
i.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

如果 Activity 已经在堆栈顶部运行,则不会重新启动它。如果您想要做的只是将数据获取到正在运行的 Activity C 而不重新启动它,您可以尝试这个或其他标志之一。有一堆。只需查看列表,看看是否符合您的需求。

于 2013-05-23T19:54:40.427 回答