Proper onDestroy () / Как избежать утечек памяти

Я прочитал ряд статей о том, как избежать утечек памяти в Android, но яЯ до сих пор не совсем уверен, правильно ли я понял.

Мое приложение состоит из одного.ActivityЯ неВ этой Деятельности нет приватных или статических членов, весь код запускается изнутри.onCreate()В них есть некоторые автономные статические классы, чьи статические экземпляры иногда содержат ссылки наContext или жеViews. В моемonDestroy() Метод, я установил все эти экземпляры на ноль.Я перерабатываю все своиBitmaps.

Q1: Этого достаточно?

Что меня смущает, так это классический пример запрета, который вы можете найти в сети (http://www.curious-creature.org/2008/12/18/avoid-memory-leaks-on-android/):

@Override
protected void onCreate(Bundle state) {
  super.onCreate(state);

  TextView label = new TextView(this);
  label.setText("Leaks are bad");

  setContentView(label);
}

Я думал, что, как толькоonCreate отделки,label выходит из области видимости и GCed.

Q2: Как это может создать утечку памяти?

Моя активность в основном выглядит так:

@Override
public void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    /* Statics */
    AssetUtils.initIndex(this);
    BitmapLoader.startInstance(this);

    /* frame */
    ViewGroup frame = (ViewGroup) getLayoutInflater().inflate(R.layout.frame, null);
    this.setContentView(frame);

    /* create controller */
    Controller controller = new Controller(frame, getLayoutInflater());

    /* START */
    controller.start();
}

@Override
public void onDestroy() {
    super.onStop();

    /* Statics */
    AssetUtils.destroyInstance();
    BitmapLoader.destroyInstance();
}

внутриController Я иногда получаюContext с помощьюView#getContext() передать его в созданный вручнуюViewи тому подобное. Это's никогда не хранится статически где-то, только в переменных-членах классов, к которым все возвращаются.Controller

Q3: Я что-то упустил из виду?

Ответы на вопрос(1)

Ваш ответ на вопрос