карты Android, маркеры и утечки памяти

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

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

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


person lucas    schedule 03.06.2013    source источник


Ответы (1)


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

person Bobbake4    schedule 03.06.2013
comment
один небольшой вопрос: если я расширяю FragmentActivity, верно ли вышесказанное? потому что onCreateView кажется другим для FragmentActivity, чем для Fragment и в других местах на SO, я читал, что onCreate можно использовать в FragmentActivity - person lucas; 03.06.2013
comment
Ну, у Activity нет обратного вызова onCreateView, поэтому вам придется использовать onCreate. Я бы порекомендовал расширить MapFragment и сохранить все ваши карты во фрагменте. - person Bobbake4; 04.06.2013