Передайте контекст или используйте view.getContext(). Действительно ли это имеет значение?

#java #android #android-context

#java #Android #android-context

Вопрос:

Итак, у меня есть два варианта получения context . Смотрите следующие два метода (очищенные для наглядности) из служебного класса.

 public static void onCopyClicked(Context context, ImageView copy){
    copy.setVisibility(View.GONE);
    Intent intent = new Intent(context, NextActivity.class);
    context.startActivity(intent);
}

public static void onCopyClicked(ImageView copy){
    Context context = copy.getContext();
    copy.setVisibility(View.GONE);
    Intent intent = new Intent(context, NextActivity.class);
    context.startActivity(intent);
}
  

Я могу передать контекст или просто получить его из представления. Думаю, я предпочитаю второй вариант, поскольку для передачи требуется на один параметр меньше, но мне интересно, является ли getContext() вызов дорогостоящим. Я не пытаюсь микроуправлять своим кодом, а просто пытаюсь следовать лучшим практикам (если таковая существует для этого случая).

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

1. До тех пор, пока copy значение не равно null и не выложено, второй вариант будет работать

2. Я годами задавался этим вопросом в своей игре, которая в среднем возвращает несколько ссылок на контекст основного действия за каждый тик. Это работает в любом случае, но я тоже обычно выбирал второй вариант, поскольку он казался немного чище, если getContext() не занимал много времени (((Activity) getContext()) в моем случае). Я удивлен, что этот вопрос имеет только 51 просмотр, хороший пример кода.

Ответ №1:

Вы можете использовать второй вариант.

Вызов getContext() на View не является дорогостоящим. context Ссылка сохраняется при View создании, и getContext() метод просто возвращает ее.

Проверьте исходный код конструктора и getContext() метод View .