Вопрос:
Есть ли способ вручную очистить буфер OpenGL, к которому обращается SupportMapFragment, прежде чем он сделает последующие вызовы glDraw()?
Причина:
У меня есть ActivityGroup, которая содержит два разных встроенных действия (только одно из которых может отображаться на экране в данный момент времени). Вот фрагмент кода макета для него.
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@+id/main_header"
android:background="#313131" >
<FrameLayout
android:id="@+id/map_area_one"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="5dp" />
<FrameLayout
android:id="@+id/map_area_two"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</RelativeLayout>
Представления для обоих действий внутри моей ActivityGroup содержат SupportMapFragment. Первое действие внутри ActivityGroup (с меньшим SupportMapFragment) отображается первым, и его представление становится дочерним элементом FrameLayout с идентификатором map_area_one.
Когда пользователь нажимает кнопку, я запускаю вторую активность внутри ActivityGroup (с большим SupportMapFragment), и ее представление становится дочерним элементом FrameLayout с идентификатором map_area_one. Затем я скрываю вид первой активности.
Проблема, с которой я сталкиваюсь, заключается в том, что, хотя представление для 1-го действия больше не видно, я все еще вижу меньший SupportMapFragment 1-го действия (хотя я не могу с ним взаимодействовать). Я приложил изображения ниже.
Я пришел к выводу, что это связано с тем, что оба SupportMapFragments рисуют карту, используя один и тот же OpenGL SurfaceView. Я почти уверен, что по какой-то причине, когда я скрываю первую активность, буфер openGL, который рисует SupportMapFragment, не очищается. Есть две причины, почему я говорю это:
- Если я переведу приложение в фоновый режим и верну его на передний план, меньший SupportMapFragment больше не будет виден.
- Если я изменю SupportMapFragment большего размера на MapView, использующий GoogleMaps Android v1, этой проблемы не будет. Это связано с тем, что GoogleMaps Android v1 не использует OpenGL.
Картинки
Снимок экрана сразу после того, как пользователь переключается на второе действие. Обратите внимание, что SupportMapFragment первого действия (это меньшая полоса карты внизу) все еще виден.
Скриншот сразу после того, как я перевел приложение в фоновый режим и вернул его на передний план. SupportMapFragment первой активности больше не виден (так и должно быть). Я предполагаю, что второе действие вызвало glClear(), когда приложение снова было выведено на передний план.
Любая помощь или предложения будут оценены. Спасибо.