tutorial android android-layout android-widget

tutorial - android add widget



¿Hay alguna diferencia entre getLayoutInflater() y.getSystemService(Context.LAYOUT_INFLATER_SERVICE)? (4)

Así es como se define un LayoutInflater.

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

Y getLayoutInflater() simplemente da "acceso rápido a la instancia de LayoutInflater que la ventana recuperó de su Contexto" (de la documentation ) devolviendo el LayoutInflater.

De manera similar, getSystemService(Context.LAYOUT_INFLATER_SERVICE) se usa para recuperar un LayoutInflater para inflar los recursos de diseño en este contexto.

Entonces, en realidad no hay diferencia entre los dos.

Fuente: Documentation

La simple respuesta "No" me tranquilizará. Si hay alguna diferencia, entonces, ¿qué es?


Hay al menos una situación que solo

getSystemService (Context.LAYOUT_INFLATER_SERVICE);

debe ser utilizado en lugar de la contraparte

getLayoutInflater

Esa situación está en una clase de objeto arbitrario. Por ejemplo, tengo una instancia de clase llamada objectA. En objectA, quiero inflar una vista en la vista principal (sucede en ArrayAdapter que infla la fila personalizada en su vista de lista). En este caso, context.getLayoutInflater no funciona ya que no hay actividad o ventanas asociadas con el contexto. Sólo es apropiado entonces getSystemService (Context.LAYOUT_INFLATER_SERVICE) .


NO.

No hay diferencia en absoluto.


No

Siempre que la Actividad o la Ventana que llama a getLayoutInflater() tenga el mismo Contexto que llamaría a getSystemService() , no hay diferencia.

Prueba Puede rastrear el LayoutInflater devuelto por getLayoutInflater() a LayoutInflater.from() y puede ver que esto es solo un atajo para getSystemService() desde el código fuente:

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; }