2011-09-08 11 views
10

En GUI, cuando se requiere una vista para volver a dibujar. Por lo general, hacer esto de la siguiente manera:¿Por qué usar la palabra "invalidar" para solicitar que se vuelva a dibujar una vista?

View v = View(); 
v.invalidate() 

no tengo idea de que la operación "invalida()" es tal llamado. En inglés, "invalidar" significa hacer algo que no es válido. Pero "invalidar una vista" en la programación de la GUI pretende hacer que la vista se vuelva a dibujar. No soy un hablante nativo de inglés. Por favor dame consejos. Tks.

+11

El punto es que la API de Android no quiere llamarlo redraw() porque eso implica que el redibujado ocurrirá inmediatamente (dentro de la función misma). Mientras que al decir invalitade() usted sabe que la vista se volverá a dibujar tan pronto como las bibliotecas del sistema Android se acerquen a ella. Llamarlo invalidar en lugar de volver a dibujar es una convención de nombres mucho mejor porque es más precisa con respecto a lo que la función realmente está haciendo. –

Respuesta

9

Para "invalidar una vista" significa que los datos que ya se han dibujado ya no son válidos. La vista de los datos no es válida, por lo tanto, invalidate() para marcarla como tal. Es menos que la función lo invalide tanto como ya no es válido, pero nadie, excepto la persona que llama al invalidate(), lo sabe todavía. El objetivo de la función es indicar al resto del código que los datos de las vistas ahora no son válidos.

4

Invalidar es semánticamente diferente del redibujado, ya que normalmente solo marca algo que se volverá a dibujar más tarde, en lugar de volver a dibujar en el momento de la llamada. La idea es que cuando se invalidan varias áreas posiblemente superpuestas, la cantidad de redibujado en un momento posterior se pueda hacer igual a la suma de áreas que no se superponen. Es decir, podemos volver a dibujar solo una vez por varias invalidaciones posteriores. Por lo tanto, existe la distinción entre redibujado e invalidación.

Cuestiones relacionadas