Разница между LayoutInflater.from и getLayoutInflater

225
04 мая 2018, 13:59

У нас есть activity я могу сделать так

LayoutInflater.from(activity)

или так

activity.layoutInflater

в чем разница?

Answer 1

Оба варианта чаще всего будут работать без особой разницы, но есть небольшое различие.

LayoutInflater.from(activity) ждет Context и там происходит:

LayoutInflater LayoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

activity.layoutInflater использует

getWindow().getLayoutInflater();

В этом то и разница, дело в том что getWindow обращается уже к закешированному LayoutInflater и работает через Provider. Более того вы получите уже Inflater с параметрами, там есть attr, которые могут быть разные например при разных стилях, темах приложения, если поменялись. Специально такое сделать возможно, но думаю в нормальных кейсах сложно встретить. Получается если есть возможность, то лучше использовать getLayoutInflater() это вызов будет быстрей (Ооооочень незначительно) и получит актуальный Inflater, в другом случае вы получите LayoutInalfater от текущего Context.

Answer 2

Дополню принятый ответ.

Разницы по сути никакой, единственная имплементация Window это PhoneWindow, которая только и делает, что кэширует инфлейтер в переменную, чтобы быстрее возвращать.

mLayoutInflater = LayoutInflater.from(context);

Так что при одинаковом контексте(активити) результат будет абсолютно одинаков.

READ ALSO
Логика работы Фрагментов в Фрагменте

Логика работы Фрагментов в Фрагменте

Есть у меня фрагент, у него есть контроллер и адаптерХочу сделать диалоговое окно тоже через фрашмент, у него не будет не контроллера,ни модели,так...

222
Отображение данных с помощью SwingWorker

Отображение данных с помощью SwingWorker

столкнулся с одной вещьюУ меня идут данные с телефона на компьютер и они отображаются в окне JFrame

232
Не получается отрисовать модель

Не получается отрисовать модель

Нужно определить находится ли треугольники модели(орел) внутри прямоугольной плоскостиНаписал программу, но отрисовка почему- то работает...

237
метод toString в классе BigDecimal

метод toString в классе BigDecimal

Листинг из JDK 18:

215