Исходный код:
public class SummaryActivity extends AppCompatActivity
{
private RecyclerView recyclerView;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_summary);
recyclerView = findViewById(R.id.summary_recycler);
...
Android Studio (v3.3) предложила сделать recyclerView
локальным для onCreate()
метода.
Модифицированный код:
public class SummaryActivity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_summary);
RecyclerView recyclerView = findViewById(R.id.summary_recycler);
...
Запускал обе версии несколько раз и не мог заметить никакой разницы. Один лучше другого? Если да, не могли бы вы объяснить, почему? У меня есть предположение, что объявление recyclerView
в качестве поля / члена класса безопаснее, однако не хватает понимания, чтобы быть уверенным.
Интересно, что происходит с recyclerView
во второй версии после завершения выполнения метода onCreate()
. Будет ли сбор мусора позже внезапно уничтожить объект?
Самое близкое, что я нашел по этой теме, было:
Создание экземпляра объекта-члена в onCreate и во время объявления , но, к сожалению, это не касается конкретной проблемы, с которой я сталкиваюсь.
Я уверен, что этот вопрос не относится только к RecyclerView
объектам в одиночку и что понимание поможет мне более правильно кодировать в будущем, также в других контекстах.
Буду очень признателен за любые разъяснения. Заранее спасибо!