2013-06-03 2 views
3

Я читал андроид документы http://developer.android.com/reference/com/google/android/gms/maps/MapFragment.html , и я наткнулся на это предложение:андроид карты, маркеры и утечки памяти

Любые объекты, полученные из GoogleMap ассоциирована с видом. Важно не держаться за объекты (например, маркер) за пределами жизни вида. В противном случае это приведет к утечке памяти, поскольку представление не может быть выпущено.

Я не совсем понимаю это, и я не уверен, что это применимо ко мне, но я просто хотел проверить: это применимо только в том случае, если фрагмент уничтожен, пока основной вид все еще существует, правильно? Мой фрагмент карты является единственным элементом в xml этого макета, поэтому я предполагаю, что когда пользователь перемещается, объекты маркера (и все остальное) уничтожаются. Правильно ли, или все наоборот?

ответ

6

Если вы посмотрите на фрагменты lifecycle, вы увидите, что вид может быть уничтожен, пока фрагмент все еще живет. Он также может воссоздать представление до уничтожения фрагмента. Это означает, что вы должны очистить и создать все маркеры в ответных вызовах onCreateView и onDestroyView. Если вы используете эти обратные вызовы для манипуляций с маркерами, вы должны быть в порядке.

+0

один маленький вопрос, хотя - если я расширяю FragmentActivity, то вышесказанное верно? потому что onCreateView по-разному отличается от FragmentActivity, чем для Fragment и в других местах на SO. Я читал, что onCreate в порядке, чтобы использовать в FragmentActivity. – lucas

+1

Ну, у Activity нет обратного вызова onCreateView, поэтому вам нужно будет использовать onCreate. Я бы рекомендовал расширить MapFragment и сохранить все ваши данные в фрагменте. – Bobbake4

Смежные вопросы