从另一个活动返回时,MapFragment地图会加载延迟

时间:2014-02-16 19:56:04

标签: android google-maps android-fragments google-maps-android-api-2 mapfragment

据我所知,MapFragment在过渡动画方面存在问题。布局上的所有视图都会立即显示,包括MapFragment自己的视图(如缩放按钮)。但是,只有在动画完成后,地图本身才会加载延迟。

为了说明问题,我做了以下几点:

  1. 我稍微更改了 Google地图android API示例中的一个活动。它通过Action Item打开一个空白活动。当我单击后退按钮时,地图将被加载,但仅在转换完成后才会加载。
  2. 我稍微夸大了过渡效果,这样你就可以更好地看到问题了。我将开发者选项中的过渡动画速度设置为 5x 。即使在1倍的速度下,这种滞后也令人不安。
  3. 观看此视频:http://www.youtube.com/watch?v=12SEotktlXI

    你有什么建议可以防止这种滞后吗?为什么所有视图都会立即加载,但地图本身不会?

    测试环境:Nexus 5,Android 4.4.2,无根

    编辑:当使用MapView而不是MapFragment时,也会出现此问题。

1 个答案:

答案 0 :(得分:-1)

原因:因为只要您显示设置活动,地图活动就会处于其暂停()状态;因此,我假设android管理从地图活动中回收了内存。

解决方案: 创建一个静态类并在那里静态地声明你的地图,以避免android回收地图使用的内存。

实施例

//your static class
public class MapData{
  public static GoogleMap map;
}

//your map activity
public class MapActivity extends Activity{

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if(MapData.map != null)
       MapData.map = ((SupportMapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
  }
}