Облегченный режим Google Maps вызывает зависание в RecyclerViewAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Облегченный режим Google Maps вызывает зависание в RecyclerView

Сообщение Anonymous »

У меня есть RecyclerView, который представляет собой список элементов с вертикальной прокруткой. Каждый элемент списка содержит MapView Google Maps V2 в упрощенном режиме. Я использую эту новую функцию, которая возвращает растровые изображения вместо полноценной карты в качестве замены Google Static Maps API.
MapView требует вызова onCreate (), onResume(), onPause(), onDestroy() и т. д. из соответствующего метода родительского Activity/Fragment. Где правильное место для их вызова из RecyclerView.Adapter и/или RecyclerView.ViewHolder?
Как я могу очистить переработанные MapViews, чтобы память не Не происходит ли утечка, сохраняя при этом список свободным?
Google утверждает, что в списках можно использовать упрощенный режим:

... вариант карты в «облегченном режиме», идеально подходящий для ситуаций, когда вы хотите
предоставить несколько карт меньшего размера или карту, которая настолько мала, что
осмысленное взаимодействие становится непрактичным, например, миниатюра в список.

ListItem.xml RecyclerView.Adapter и ViewHolder

Код: Выделить всё

public class NearbyStopsAdapter extends RecyclerView.Adapter {

private final Context mContext;

public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

MapView map;

public ViewHolder(View view) {
super(view);
map = (MapView) view.findViewById(R.id.mapImageView);
// Should this be created here?
map.onCreate(null);
map.onResume();
}
}

public NearbyStopsAdapter(Context c) {
this.mContext = c;
}

@Override public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int position) {
View itemView = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.list_item_nearby_stop, viewGroup, false);
return new ViewHolder(itemView);
}

@Override public void onBindViewHolder(ViewHolder holder, int position) {
//Call Async Map here?
holder.map.getMapAsync(this);
}

@Override public void onViewRecycled(ViewHolder holder) {
// Cleanup MapView here?
//        if (holder.map != null) {
//            holder.map.onPause();
//            holder.map.onDestroy();
//        }
}

@Override public void onViewAttachedToWindow(ViewHolder holder) {
// Setup MapView here?
//            holder.map.onCreate(null);
//            holder.map.onResume();
}

@Override public void onViewDetachedFromWindow(ViewHolder holder) {
// Cleanup MapView here?
//        if (holder.map != null) {
//            holder.map.onPause();
//            holder.map.onDestroy();
//        }
}

// ...
}
Logcat:

Код: Выделить всё

I/Google Maps Android API﹕ Google Play services package version: 659943
W/Google Maps Android API﹕ Map Loaded callback is not supported in Lite Mode
W/Google Maps Android API﹕ Buildings are not supported in Lite Mode
W/Google Maps Android API﹕ Indoor is not supported in Lite Mode
W/Google Maps Android API﹕ Toggling gestures is not supported in Lite Mode
W/Google Maps Android API﹕ Toggling gestures is not supported in Lite Mode
W/Google Maps Android API﹕ Toggling gestures is not supported in Lite Mode
W/Google Maps Android API﹕ Toggling gestures is not supported in Lite Mode
Обновление: (8 июня 2018 г.) Google выпустила пример кода для использования Lite Maps в ListView. См. здесь

Подробнее здесь: https://stackoverflow.com/questions/286 ... cyclerview
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Kotlin RecyclerView в RecyclerView после обновления представление переходит в дочерний RecyclerView
    Anonymous » » в форуме Android
    0 Ответы
    80 Просмотры
    Последнее сообщение Anonymous
  • Добавление Google Maps в RecyclerView
    Anonymous » » в форуме Android
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Как переместить позицию Api Api Maps Maps Api Compass
    Anonymous » » в форуме Android
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • WindowsPortableDevice IPortableDeviceContent::Delete вызывает зависание моего устройства. Как я могу это решить?
    Anonymous » » в форуме C++
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • WindowsPortableDevice IPortableDeviceContent::Delete вызывает зависание моего устройства. Как я могу это решить?
    Anonymous » » в форуме C++
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Android»