如何从菜单启动时恢复活动?

时间:2013-03-25 17:52:23

标签: android android-activity resume

我正在构建包含许多活动的Android GPS应用程序。我的主屏幕是一个谷歌地图屏幕,它从远程数据库加载所有最近的位置。我还有其他活动可以从菜单按钮中选择,例如列表模式,添加新位置,登录等

当我按下列表模式(或任何其他活动),然后启动该活动,然后按下手机上的物理后退按钮,我可以返回到我的主屏幕,这是我的地图活动而不重新启动并在应用程序启动时重新加载所有标记。然而,我的问题是,当我处于列表模式,然后从菜单选项中按地图模式时,它会重新启动地图活动,以便它再次检索位置。我想能够按下这个Map Mode按钮,然后恢复它,就像我按下物理后退按钮一样。我怎么能这样做?

3 个答案:

答案 0 :(得分:1)

我相信你正在创建一个新的Map Activity并将这个新实例放在活动堆栈之上。

所以你的活动堆栈看起来像这样:

  • 地图活动
  • 列出活动
  • 地图活动

如果我是对的,那么从这个'新'地图活动回来将会带你回到列表活动。再次按回会将您带到原始地图活动(您正在寻找的那个。

因此,当您进入列表活动时,您只需完成()那个活动,而不是盯着新的地图活动。

查看此文档以进一步阅读意图标记: Intent Flags

答案 1 :(得分:0)

我会看一下:Managing the Activity Lifecycle。我有一个类似的应用程序,我需要“缓存”地图数据,以便我必须重新加载它。我用这个作为参考。

答案 2 :(得分:0)

在您的清单中,将Map活动的启动模式声明为singleInstance。然后我想你会没事的。来自http://developer.android.com/reference/android/R.styleable.html#AndroidManifestActivity_launchMode

只允许此活动的一个实例运行。此活动获得一项独特的任务,只在其中运行;如果它再次使用相同的Intent启动,则该任务将被提前并调用其Activity.onNewIntent()方法。如果此活动尝试启动新活动,则将在单独的任务中启动该新活动。有关任务的更多详细信息,请参阅任务和后台堆栈文档。