¿Por qué necesitamos un cuarto constructor para Lollipop?

Comencé un proyecto dirigido a Android Lollipop (21), y creé una vista personalizada. Cuando generé constructores para la vista, conseguí un nuevo 4to constructor que toma más params que los otros.

public class FooView extends FrameLayout { public FooView(Context context) { super(context); } public FooView(Context context, AttributeSet attrs) { super(context, attrs); } public FooView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } // This 4th constructor @TargetApi(Build.VERSION_CODES.LOLLIPOP) public FooView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } } 

Mi pregunta es, ¿por qué lo necesitamos? ¿Qué sucedería si eliminara este constructor y ejecutar la aplicación en Lollipop?

Información del documento oficial

Public View (Contexto contextual, AtributoSet attrs, int defStyleAttr, int defStyleRes)

Añadido en API nivel 21

Realice la inflación desde XML y aplique un estilo de base específico de clase desde un atributo de tema o un recurso de estilo. Este constructor de Vista permite que las subclases utilicen su propio estilo base cuando se infla.

Al determinar el valor final de un atributo particular, hay cuatro entradas que entran en juego:

  1. Cualesquiera valores de atributo en el AttributeSet dado.
  2. El recurso de estilo especificado en AttributeSet (denominado "style").
  3. El estilo predeterminado especificado por defStyleAttr.
  4. El estilo predeterminado especificado por defStyleRes.
  5. Los valores base en este tema.

Cada uno de estos insumos se considera en orden, con la primera lista tomando prioridad sobre los siguientes. En otras palabras, si en el AttributeSet que ha proporcionado, el texto del botón siempre será negro, independientemente de lo que se especifica en cualquiera de los estilos.

Parámetros

  • Contexto El Contexto en el que se ejecuta la vista, a través del cual puede acceder al tema actual, recursos, etc.
  • Attrs Los atributos de la etiqueta XML que infla la vista.
  • DefStyleAttr Un atributo en el tema actual que contiene una referencia a un recurso de estilo que suministra valores predeterminados para la vista. Puede ser 0 para no buscar valores por defecto.
  • DefStyleRes Identificador de recurso de un recurso de estilo que suministra valores predeterminados para la vista, utilizado sólo si defStyleAttr es 0 o no se encuentra en el tema. Puede ser 0 para no buscar valores por defecto.
  • ¿Cómo implementar la comunicación entre la aplicación cliente Java (Android) y la aplicación de servidor PHP?
  • ListActivity TwoLineListItem Alternativa
  • Android: alternativa para context.getDrawable ()
  • ¿Cómo rebatir una solicitud reactiva retrofit en java?
  • Crear una anotación Java con comportamiento contextual IDE
  • Configuración adecuada de Proguard para mantener la clase interna estática
  • ContentProvider insert () siempre se ejecuta en el hilo de interfaz de usuario?
  • Verificando servidores Verisign certificates throws No es una excepción de certificado de servidor de confianza
  • No se puede implementar Parcelable porque no puedo hacer que el campo CREATOR esté estático
  • ¿Cuál es la convención para nombres de paquetes java sin una asociación de dominio?
  • ¿No puede utilizar un método estático público?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.