多个MapFragments的性能(Android Map API v2)

时间:2012-12-06 10:53:42

标签: android google-maps mapfragment

我搜索了新Google Android Map API v2的文档,但没有找到任何相关信息。在v2之前,我们(官方)无法正确显示每个应用程序(进程)的多个映射。我假设在MapFragment实施时它不再是问题。我也知道,自API 17以来Fragments可以是自包含的。最后但并非最不重要的是,有兼容性包,这使得将它们全部移回至少API 8(在API 7中,没有OpenGL 2.0所以地图不能用于afaik)。

Sa我拥有将我的应用移植到Maps API v2并实现以下方案的所有要素:ViewPager包含Fragments,每个都包含MapFragment

但我应该这样做吗?我的意思是,我会遇到性能问题 Fragments中包含MapFragments的20 ViewPager

如果您在文档或其他地方找到了解决我问题的任何内容,请告诉我。


编辑:示例用法:让我们想象一个屏幕,其中包含有关某些特定项目的信息 - 地点,事件,文章。另外,让我们想象一下,在其他信息中,它必须包含一个完全正常运行的地图。但我希望用户能够根据需要刷到另一个项目。每个项目都有自己的地图。

旁注:我知道我可以在ViewPager之外实现一个地图,只是根据当前显示的项目进行更新,但这不是我想要的 - 它不是以用户为中心的设计。 / p>


可能的解决方案(但尚未检查)。 ViewPager只在其缓存中保留一些(默认值为3)片段,并在它们即将显示时重新创建它们,因此不会有太多内存开销,因为只需要少量MapFragments 。性能问题可能是MapFragment通货膨胀,我认为这是非常沉重的 - 但这可以通过回收MapFragments来解决。


那么,如果我相信它会很好用的话,为什么我不实施呢?还有一个问题是,如果没有应用程序看起来像它已经坏了就无法移动MapFragmentsSee this

2 个答案:

答案 0 :(得分:1)

你可以轻松测试它,但我的猜测是它非常依赖于手机,因为地图仍然很重要。

那说我永远不会推荐这种用户导航。地图已经可以刷过了,为什么还要添加ViewPager滑动呢?这将使用户体验非常混乱。如果你想在不同的视图/兴趣点之间切换,你应该添加按钮(导航应用程序中首选的溢出菜单按钮)或类似的东西,以帮助用户导航。

答案 1 :(得分:1)

是的,您肯定会遇到性能问题,因为ViewPager默认情况下不使用视图回收;你甚至可以使用ImageView s使其膨胀,更不用说MapFragments了。

ViewPager中的缓存和重新创建片段而言,有一个HorizontalListView库可能会为您节省工作量,因为它支持视图回收。