2010-11-14 3 views
7

друзья,точки утечки памяти в Android не ясны!

Я прочитал полную статью, связанную с тем, чтобы избежать утечек памяти в android. http://developer.android.com/resources/articles/avoiding-memory-leaks.html

прямо сейчас

1) Я использую частный вложенный класс не статический

если я сделать что вложенный класс статический это будет полезно?

2) статья говорит Если вы собираетесь использовать внутренние классы или анонимные классы, подумайте о них. Не используйте Анонимные классы до тех пор, пока вы не будете уверены, и можете доказать, что они не вызывают утечку памяти.

Может ли кто-нибудь дать мне пример этого? который является хорошим подходом и который плохо для утечек памяти.

любая помощь будет оценена.

+0

Во второй раз, я читал статью много раз и до сих пор не знаю, что именно я должен сделать, чтобы предотвратить утечки в моем приложении. Должен ли я хранить ссылку на все доступные в моем приложении и устанавливать свой обратный вызов на null? Что мне делать, статья должна действительно предоставить еще несколько примеров, учитывая, насколько важна тема. – marchinram

+0

да, я тоже смущен, примеры недостаточно ясны и нуждаются в более подробных объяснениях. – UMAR

ответ

1

1) Я бы вообще не использовал статические классы. Особенно, если вам нужно передать указатель контекста, так как это вызовет утечку. Если у вас нет статических классов на константах, они аналогичны глобальным переменным и могут обойти архитектуру Android, которая предназначена для развязки действий.

В частности, вы не хотите объявлять Drawable экземпляры или объекты фреймворка Android как статические. Это испортило их жизнь.

2) Я не видел никаких проблем с анонимными классами в частности. В некоторых случаях вы можете пропустить переменную Context, но это трудно сделать в одном потоке. При передаче контекста вы можете ограничить утечки с помощью getApplicationContext(), который возвращает глобальный контекст, который не будет протекать.

Надеюсь, это поможет!

+0

См. Также эту тему: http://code.google.com/p/android/issues/detail?id=8488 – swinefeaster

+0

Я не знаю, есть ли у вас какие-либо проблемы, но это я нашел падение в решении который устраняет все проблемы с утечкой памяти в Android со стандартными классами Android: http://code.google.com/p/android/issues/detail?id=8488#c51 – swinefeaster