¿Canvas.getClipBounds asigna un objeto Rect?

En mi vista personalizada, estoy buscando usar Canvas.getClipBounds () para optimizar mi método onDraw (para que sólo dibuje lo que es absolutamente necesario cada vez que se llame).

Sin embargo, todavía quiero evitar absolutamente cualquier creación de objetos …

Mi pregunta, por lo tanto es: ¿ getClipBounds() asigna un nuevo Rect cada vez que se llama? ¿O es simplemente el reciclaje de un solo Rect?

Y si está asignando un nuevo objeto, ¿puedo guardar este gasto utilizando getClipBounds(Rect bounds) , que parece utilizar el pasado Rect en lugar de su propio?


(antes de gritar la optimización prematura, considere que cuando se coloca en un ScrollView, onDraw se puede llamar muchas veces cada segundo)

He mirado en el código fuente para la lona como de Android 4.0.1, y es como sigue:

 /** * Retrieve the clip bounds, returning true if they are non-empty. * * @param bounds Return the clip bounds here. If it is null, ignore it but * still return true if the current clip is non-empty. * @return true if the current clip is non-empty. */ public boolean getClipBounds(Rect bounds) { return native_getClipBounds(mNativeCanvas, bounds); } /** * Retrieve the clip bounds. * * @return the clip bounds, or [0, 0, 0, 0] if the clip is empty. */ public final Rect getClipBounds() { Rect r = new Rect(); getClipBounds(r); return r; } 

Así que, respondiendo a tu pregunta, getClipBounds (Rect limits) te ahorrará de una creación de objeto, pero getClipBounds () creará un nuevo objeto Rect () cada vez que se llame.

la declaración del método real para "getClipBounds ()" es esta

  1. public boolean getClipBounds (Rect limits) para que no cree un nuevo Rect cada vez que llame. Utilizará el objeto Rect que pasará como argumento a esta función. sugiero echar un vistazo a esta descripción de enlace aquí
  • Mi codificador JNI JPEG para Android es muy lento
  • Ajustes de optimización de Proguard: Habilitar la combinación de clases, los modelos y el campo / * en versiones modernas de API y Proguard
  • Optimizaciones de Scrollview
  • ¿Por qué proguard procesa AndroidManifest.xml?
  • Simple particle system en Android usando OpenGL ES 1.0
  • Prueba NEON-optimizado cv :: threshold () en el dispositivo móvil
  • Precisión del sueño del hilo
  • Bucle eficiente a través de la lista de Java
  • Creación de perfiles y optimización de un juego Android
  • Cómo utilizar -assumenosideeffects clase android.util.Log en mi aplicación
  • Un método más eficiente de dibujar miles de partículas (Java / Android)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.