Запутался в скоупах
Есть вот такой код активности.
public class MainActivity extends AppCompatActivity {
private final Random random = new Random();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RecyclerView items = findViewById(R.id.items);
ColorAdapter adapter = new ColorAdapter(getLayoutInflater());
adapter.submitList(buildItems());
items.setLayoutManager(new LinearLayoutManager(this));
items.addItemDecoration(
new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));
items.setAdapter(adapter);
}
private List<Integer> buildItems() {
ArrayList<Integer> result = new ArrayList<>(25);
for (int i = 0; i < 25; i++) {
result.add(random.nextInt());
}
return result;
}
}
Возьмем к примеру RecyclerView items = findViewById(R.id.items);
Этот вью объявлен внутри метода OnCreate, соответственно, является локальной переменной и по окончании работы метода должен быть уничтожен сборщиком мусора.
Но этого не происходит. Почему?
В моем понимании, этот вью появится в момент вызова OnCreate() и сразу будет уничтожен после вызова. И было бы правильно вынести эту переменную в глобальную область видимости (объявить вне метода, а в OnCreate только инициализировать).
Я не прав?