【问题标题】:Android MapView in a RecyclerView - caching for performanceRecyclerView 中的 Android MapView - 缓存性能
【发布时间】:2017-10-29 00:01:36
【问题描述】:

我有一个包含多种项目类型的 RecyclerView,其中一个项目类型中有一个 MapView。
我的问题是我想显示多个 MapViews 并且在滚动发生时地图的加载可能会很慢;即使同一地点多次显示或视图已被回收,也必须再次加载地图上的更多内容。
根据 Google maps API 服务条款,出于性能原因允许缓存地图:

10.5.d:没有缓存或存储。您不会预取、缓存、索引或存储要在服务之外使用的任何内容,除非您 可能仅出于以下目的存储有限数量的内容 提高 Maps API 实施的性能,因为 网络延迟(并不是为了阻止 Google 准确跟踪使用情况),并且只有在这样的存储:
一世。是临时的(在任何情况下都不会超过 30 个日历日);
ii.是安全的;
iii.不操纵或聚合内容或服务的任何部分;和
iv.不会以任何方式修改归属。

如何在 MapView 中进行和缓存\恢复地图? - 我在 MapView 的 API 中看不到任何相关的内容

【问题讨论】:

  • 由于我没有得到答案,我想我会发布我最终使用精简模式 (developers.google.com/maps/documentation/android-api/lite) 来提高性能
  • 有什么方法可以缓存精简模式下的地图?
  • 我非常怀疑,但它们加载速度更快
  • 我认为更好的方法是不使用recyclerview,因为这对于在运行时发生变化的动态元素很有用,并且在它们看不见时会破坏元素。所以我认为 listview 会更好。

标签: android performance google-maps caching android-mapview


【解决方案1】:

您可以通过应用以下方法来实现一些性能改进:

recyclerView.setHasFixedSize(true);
recyclerView.setDrawingCacheEnabled(true);

..结合 MapsView 的精简模式:

<com.google.android.gms.maps.MapView
        android:layout_width="match_parent"
        android:layout_height="200dp"
        app:liteMode="true"
        app:mapType="normal" />

@MikeL 我在这里总结了你的答案,这样其他人会更快找到答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-20
    • 2011-01-11
    • 2015-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多