#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
.