Android如何在不移动到其他活动的情况下在活动之间传输数据

时间:2013-05-23 19:36:21

标签: android android-intent

如何在两个活动之间传输数据,没有实际转移到该活动?方案如下:

Activity A是一个闪屏。在显示启动画面时,会在ArrayList类型的背景中生成一些数据。加载此数据后,我需要启动Activity B(比如说登录界面),就在此之前我需要将数据传输到Activity C.我知道我可以使用{{1} }用于传输数据,但不会运行目标PutExtras而只是发送数据?

谢谢

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

Activity A(启动画面) - > Activity B(登录屏幕) - > Activity D(某些用户界面和按钮) - > Activity C(应该能够在某些Activity按下时加载在初始屏幕中生成的数据的活动)。

2 个答案:

答案 0 :(得分:2)

我认为你并不完全了解活动和应用的生命周期。

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

如果您要执行下载数据这样的昂贵任务,请在AsyncTask中执行此操作

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

位置您可以存储此已加载的数据,以便以后可以轻松访问任何活动database with help of Loaders(加载程序是可选的但非常好)或SharedPreferences.

答案 1 :(得分:0)

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

Intent i = new Intent()
i.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
如果活动已经在堆栈顶部运行,

将不会重新启动活动。如果您要做的只是将数据提供给活动C,而活动C在没有再次启动的情况下运行,您可以尝试使用此标记或其他标记。有一堆他们。只需查看the list,看看是否符合您的需求。