Мне нужно иметь ссылку на контекст в моем классе utils.Android - статический контекст
Сначала я простирающийся класс Application и инициализация моего UTIL класса:
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
Utils.init(getApplicationContext());
}
}
И Utils класс выглядит следующим образом:
public class Utils{
private static Context sContext;
private Utils() {
}
public static void init(Context context) {
sContext = context;
}
}
Есть любые возможного способа получить утечку с таким подходом ?
Я вижу только один случай: когда приложение переходит в фоновый режим - контекст может быть воссоздан, и поэтому класс Utils может быть повторно инициализирован, даже если он будет сохраняться в памяти.
Любые предложения, пожалуйста.
Да, это может привести к утечке памяти, когда ориентация экрана меняется .. Можете ли вы сказать мне, почему вы должны удерживать контекст как собственное поле класса Utils? – Bhargav
Это было просто теоретическое, конечно. Но теперь, как изменения ориентации влияют на эти классы? Нет никаких ссылок на действия. –
Я предполагаю, что до тех пор, пока вы передаете в applicationContext методы init, это прекрасно, но для того, чтобы вы сохраняли только контекст приложения в своем классе 'Utils', вам нужно сделать это в методе init' sContext = context. getApplicationContext(); ' – Bhargav