Есть ли разница между getLayoutInflater () и .getSystemService (Context.LAYOUT_INFLATER_SERVICE)

Простой ответ «Нет» меня успокоит. Если есть какая-то разница, то что это?

Solutions Collecting From Web of "Есть ли разница между getLayoutInflater () и .getSystemService (Context.LAYOUT_INFLATER_SERVICE)"

нет

Пока активность или окно, которое вызывает getLayoutInflater() имеет тот же контекст, который вызывает getSystemService() , нет никакой разницы.


Доказательство. Вы можете проследить LayoutInflater, возвращаемый getLayoutInflater() в LayoutInflater.from (), и вы можете видеть, что это всего лишь ярлык для getSystemService() из исходного кода:

 public static LayoutInflater from(Context context) { LayoutInflater LayoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); if (LayoutInflater == null) { throw new AssertionError("LayoutInflater not found."); } return LayoutInflater; } 

Так вы определяете LayoutInflater.

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

И getLayoutInflater() просто дает «быстрый доступ к экземпляру LayoutInflater, который извлекается из его контекста» (из документации ), возвращая LayoutInflater.

Аналогично, getSystemService(Context.LAYOUT_INFLATER_SERVICE) используется для извлечения LayoutInflater для раздувания ресурсов макета в этом контексте.

Таким образом, на самом деле нет НИКАКОЙ разницы между этими двумя.

Источник: документация

Существует, по крайней мере, одна ситуация,

getSystemService (Context.LAYOUT_INFLATER_SERVICE);

Должны использоваться вместо аналога

getLayoutInflater

Эта ситуация находится в произвольном классе объектов. Например, у меня есть экземпляр класса call objectA. В объекте A я хочу раздуть представление на родительском представлении (произойдет в ArrayAdapter, который надувает настроенную строку в своем списке). В этом случае context.getLayoutInflater не работает, поскольку нет активности или окон, связанных с контекстом. Тогда подходит только getSystemService (Context.LAYOUT_INFLATER_SERVICE) .

NO.

Нет никакой разницы.