Страницы

Поиск по вопросам

среда, 10 октября 2018 г.

Android Studio пишет, что переменной присвоено значение null, но она нигде не используется

Вопрос назрел случайно, когда перешел с Eclipse на AS. Компилятор пишет предупреждение (указал в топике). Но меня это смущает. Смысл вот в чем. Есть некий класс, я получаю его экземпляр. Использую его методы. После использования переменную, которая получала этот экземпляр обнуляю (=null).
MyPreferences pref = new MyPreferences(); pref.loaddata(); ...использую методы класса MyPreferences pref = null;
Вот на последней строчке AS предупреждает. Но раньше я читал такую фразу, что "Android не любит утечки ресурсов поэтому освобождаем переменную....и присваивали ей null". Помогите разобраться как правильно писать... спасибо.


Ответ

В том и интерес области видимости и управления памятью в JVM. К примеру, Вы выполняете в своем методе все вышеописанное, после выполнения кода и выхода из метода, ссылки на объект теряются и через время он уничтожается сборщиком мусора. По сути, Вы дописываете лишнее, на что AS и указывает. Совсем другая история, если MyPreferences pref Вы укажете вне метода, переменной класса. Вот тогда pref = null; действительно необходимо для обнуления ссылок для последующего уничтожения объекта сборщиком мусора.
private void myMethod() { MyPreferences pref = new MyPreferences(); pref.loaddata(); ...использую методы класса MyPreferences }
против
public class MyClass extends NotMyClass { MyPreferences pref; ... private void myMethod() { pref = new MyPreferences(); pref.loaddata(); ...использую методы класса MyPreferences pref=null; } }

Комментариев нет:

Отправить комментарий