Я читал, что это ошибка и источник утечек памяти в приложении Android для сохранения долговечных ссылок на контекст.Android: ссылки на контекст и утечки памяти
Но я не понимаю, если это нормально, чтобы создать класс, который выглядит как этот:
public class HelperClass {
private Context context;
public HelperClass(Context context) {
this.context = context;
}
public void myHelperMethod() {
// uses this.context
}
}
И называют его от деятельности:
public class MyActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
HelperClass h = new HelperClass(this);
h.myHelperMethod();
}
...
}
Что делать, если у вас есть приватная переменная с таким вспомогательным классом в вашей деятельности, которая содержит ссылку «Контекст»? – Peterdk
@Peterdk, если ваша переменная содержит экземпляр контекста из getApplicationContext(), без проблем. Но если вы используете Контекст из Activity, позаботьтесь о утечке памяти (более корректно удерживая экземпляр от Activity больше, чем нужно). Возможно, вы должны использовать WeakReference для хранения экземпляра контекста Activity и использовать прослушиватель, чтобы узнать, когда ваше приложение изменилось на другую активность. – marciowb