Я просто прочитал блог-почту от Ромена Гая о том, как избежать утечек памяти в Android.
В статье он приводит этот пример:
private static Drawable sBackground;
@Override
protected void onCreate(Bundle state) {
super.onCreate(state);
TextView label = new TextView(this);
label.setText("Leaks are bad");
if (sBackground == null) {
sBackground = getDrawable(R.drawable.large_bitmap);
}
label.setBackgroundDrawable(sBackground);
setContentView(label);
}
Ромен сказал:
Этот пример является одним из самых простых случаев утечки Контекста.
Мой вопрос в том, как вы правильно его изменяете?
Как это?
TextView label = new TextView(Context.getApplicationContext());
Я тестировал оба пути, и результаты были одинаковыми. Я не могу найти разницу. И я думаю, что this
более корректен, чем контекст приложения. Поскольку this
является ссылкой на Activity
, т.е. TextView
принадлежит этому Activity
.
Может ли кто-нибудь дать мне объяснение этому?