En el código fuente de Activity.java, veo fuelle algunos métodos:Evitar Getters Interna/setters
public View findViewById(int id) {
return getWindow().findViewById(id);
}
y la definición del método GetWindow:
public Window getWindow() {
return mWindow;
}
Pero a medida que las siguientes reglas:
Evitar Getters interna/setters
En los idiomas nativos como C++, es la práctica más común de usar getters (p. Ej. i = getCount()) en lugar de acceder directamente al campo (i = mCount). Esto es un excelente hábito para C++, porque el compilador generalmente puede alinear el acceso , y si necesita restringir o acceso al campo de depuración puede agregar el código en cualquier momento.
En Android, esta es una mala idea. Las llamadas a métodos virtuales son costosas, mucho más que las búsquedas de campo de instancia . Es razonable seguir las prácticas comunes de programación orientadas a objetos y tener getters y setters en la interfaz pública, pero dentro de una clase siempre debe tener acceso a los campos directamente.
Sin un JIT, el acceso directo al campo es aproximadamente 3 veces más rápido que invocar un getiv trivial. Con el JIT (donde acceso de campo directo es tan barato como accediendo a un local), el acceso directo al campo es aproximadamente 7 veces más rápido que invocando un captador trivial. Esto es verdadero en Froyo, pero mejorará en el futuro cuando el JIT incorpore los métodos getter .
así que quiero saber por qué los desarrolladores de Android no tienen acceso a este objeto mWindow directamente? Si el JIT de las versiones actuales de Android no puede alinear el acceso, getWindow(). FindViewById (id) costará más tiempo que mWindow.findViewById (id), y findViewById es un método bastante utilizado.
Gracias por contestar. Ciertamente llamo findViewById una vez para cada vista como dijiste. Tal vez malinterpreté el principio, y ahora está claro. – teok