【问题标题】:3 instances of MapActivity3 个 MapActivity 实例
【发布时间】:2011-07-10 09:39:23
【问题描述】:

它在 Maps API 中明确规定每个进程只允许一个 MapActivity。 我的问题是我需要 3 个,不一定是 3 个活动,而是 3 个实例。 我创建了一个 Travell 代理应用程序,可让您预订酒店和活动。在我的应用程序的酒店功能中关注一秒钟,当您搜索酒店时,您自然可以在地图上看到所有内容,这是我需要的 MapActivity 的第一个实例,用于显示所有酒店。 如果您从 ListActivity 或 MapActivity 中选择酒店,您可以在 HotelInfoActivity 中看到该酒店的信息。 hotelInfoActivity 还引用了 MapActivity,它可以让您在地图上看到该特定酒店而没有任何其他酒店....(下一步也将添加路线,但该功能尚未开发中)。

当您执行以下情况时会发生错误:

  1. 你输入所有酒店的地图
  2. 您进入酒店信息
  3. 从 HotelInfoActivity 进入 MapActivity 以查看地图上的酒店(我启动相同的活动,但意图使用 MapActivity 检测到的不同数据)。
  4. 到目前为止一切正常。
  5. 我按两次返回(返回 HotelInfoActivity,然后返回所有酒店的 MapActivity)。
  6. 我看到了之前的(单一酒店)MapActivity。

有没有办法解决这个问题?很高兴我在活动堆栈上有两个活动实例,因此我可以导航回每个实例,但是我怎样才能防止它们将状态从一个实例传递到另一个实例????

(顺便说一句,第三个实例是在您预订酒店之后,您可以在地图上看到它,但由于某种原因我在那里没有问题)。

【问题讨论】:

    标签: android api maps instance


    【解决方案1】:

    有什么办法可以解决这个问题吗?

    如文档所述,只有一个 MapActivity。对于您描述的场景,您不需要多个MapActivity。根据用户交互(例如,点击图标和返回按钮)更改您的叠加层和地图中心/缩放级别。

    【讨论】:

    • 基本上我让android为我做这件事,我在应用程序中有一个MyMapActivity。我确实以包含不同值的意图开始它,并且对于那些不同的值,覆盖层被填充并添加到地图中。我的问题是当我恢复一个已经使用过的 MyMapActivity 时,它会加载以前的地图显示,即使 MyMapActivityInstance 已被 OnDestroy 销毁。我现在正在检查在 onResume 而不是 onCreate 上移动一些代码是否可以解决我的问题。
    • 我会接受答案,尽管它没有说任何新内容......我已经移动了添加叠加层并将缩放和地图中心设置为 onResume 函数的代码,这解决了我的问题,问题是 MapAcitivy 为保存网络操作所做的缓存,即使我恢复旧实例 MapActivity 从活动存储中获取最新的图块。如果你问我,谷歌的不良行为......
    • @codeScriber: MapActivity 已记录限制。您阅读了文档,忽略了它,结果您的代码无法正常工作。如果您不希望遵守限制,请随意使用替代地图实现(例如,Open Street Map)。理想情况下,一个应用程序可以有多个MapActivity 实例。理想情况下,我会有更多的头发。我们不是生活在一个理想的世界里,我秃顶的脑袋就是证明。
    • 同意,但是我有一个规范要完成并使用您的方法(意味着每当我启动地图活动时使用 SINGLE_TOP 标志)我会在活动堆栈中释放活动(因为它'将被带到前面),所以基本上你所说的我不能适用于我的规范。你是对的,这不是一个完美的世界,从来都不是,但由于谷歌地图应用程序确实具有该功能,是的,我认为这是他们的不良行为,除了我只有一个 MapActivity,但有多个实例,并创建另一个进程来托管多个在我看来,这个例子太可怕了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-06
    • 2011-04-05
    • 2017-12-29
    • 1970-01-01
    相关资源
    最近更新 更多