Карта MapFragment загружается с задержкой при возврате из другого действия
Насколько я вижу, MapFragment
имеет проблему с анимацией перехода. Все виды на макете отображаются немедленно, включая собственные виды MapFragment (например, кнопки масштабирования). Но сама карта загружается с задержкой только после завершения анимации.
Чтобы проиллюстрировать проблему, я сделал следующее:
- Я немного изменил одно из действий в примерах Google Maps для Android API. Он открывает пустое действие через элемент действия. Когда я нажимаю кнопку "Назад", карта загружается, но только после завершения перехода.
- Я немного преувеличил эффект перехода, чтобы вы лучше видели проблему. Я установил скорость анимации перехода в параметрах разработчика на 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();
}
}