2015-09-22 4 views
1

Я недавно смотрел видеоролики от разработчиков Google Android о важности удаления ссылки на объекты, когда вы сделали с ними ... Я реализовал простой метод очистки. Будет ли это на самом деле работать?хороший класс памяти очистка практика?

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

public void onStart() { 
    tweens = new TweenUm(this); 
} 

и в моем OnStop я ...

public void onStop() { 
    tweens.cleanup(); 
    tweens = null; 
    super.onStop(); 
} 

мой метод очистки выглядит как ...

public void cleanup() { 
    mainAct = null; 
    fab = null; 
    fabcrad=null; 
    searchFor = null; 
} 

mainact является деятельность я прошла в, а также другие виды Я хочу удалить ссылку.

Это будет полезно?

ответ

1

Нет необходимости добавлять метод cleanup.

Поскольку вы обнуление ссылки на объект tweens, если никаких других ссылок не поддерживаетс в памяти, tweens и все внутренние объекты упоминаться только подростками (mainAct, ФАБ, fabcrad, SearchFor) будут освобождены из памяти сборщика мусора ,

Используйте метод cleanup только для закрытия ресурсов (например, файлов, сокетов и т. Д.).

Примечания: в то время как обнуление твины важно Создание (и вызов) очистки не является хорошим выбором, Infact есть две возможности:

  • нет других ссылок на подросток существует, поэтому обнуление внутренних ссылок не обязательно
  • другие ссылки на подростки существуют, в этом случае вы, вероятно, сломаете внутреннее состояние подростков, попадающих в недопустимое состояние.

Как правило, если вам не нужно закрывать внешние открытые ресурсы, не рекомендуется использовать метод очистки.

+0

Ах спасибо, но в этом обстоятельстве его по-прежнему хорошая практика положить tweens = null; удалить ссылку на нее и сделать ее доступной для GC? – aidanmack

+0

Да, вернувшись в нуль, вы вернетесь. Но очистка метода не является решением ggod, infact есть две возможности: 1) нет никаких других ссылок на tweens, поэтому обнуление внутренних ссылок не требуется 2) существуют другие ссылки на tweens, в этом случае вы, вероятно, нарушите внутреннее состояние подростки приходят в недопустимое состояние. Поэтому, как правило, это не очень хорошая практика. –

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