Карта MapFragment загружается с задержкой при возврате из другого действия

Насколько я вижу, MapFragment имеет проблему с анимацией перехода. Все виды на макете отображаются немедленно, включая собственные виды MapFragment (например, кнопки масштабирования). Но сама карта загружается с задержкой только после завершения анимации.

Чтобы проиллюстрировать проблему, я сделал следующее:

  1. Я немного изменил одно из действий в примерах Google Maps для Android API. Он открывает пустое действие через элемент действия. Когда я нажимаю кнопку "Назад", карта загружается, но только после завершения перехода.
  2. Я немного преувеличил эффект перехода, чтобы вы лучше видели проблему. Я установил скорость анимации перехода в параметрах разработчика на 5x. Даже на скорости 1x это отставание вызывает беспокойство.

Смотрите это видео: http://www.youtube.com/watch?v=12SEotktlXI

Есть ли у вас какие-либо предложения, чтобы предотвратить это отставание? Почему все виды загружаются сразу, а сама карта - нет?

Среда тестирования: Nexus 5, Android 4.4.2, без рута

Редактировать: эта проблема также возникает, когда MapView используется вместо MapFragment.

1 ответ

Причина: это потому, что как только вы увидите настройки активности, активность карты будет в состоянии onpause(); Таким образом, я предполагаю, что управление Android восстановило память от активности карты.

Решение: Создайте статический класс и объявите там статическую карту, чтобы Android не занимал память, используемую вашей картой.

Ex.

//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();
  }
}
Другие вопросы по тегам