La técnica de pantalla en segundo plano consiste en lo siguiente: Muchos dispositivos que no poseen una gran capacidad computacional provocan un parpadeo a la hora de actualizar los gráficos en pantalla. En estos casos, lo ideal sería hacer todas las actualizaciones gráficas en memoria y posteriormente volcar el contenido de memoria en pantalla. Esta técnica es la que se conoce como double buffering. Algunos de estos dispositivos implementan esta técnica sin que tengamos que escribir ni una sola línea de código. Para saber si el MID donde ejecutamos nuestra aplicación aplica esta técnica, existe un método de la clase Canvas que nos devuelve true o false en caso de que
aplique esta técnica o no: boolean isDoubleBuffered().
En caso de que el método nos devuelva true, no tenemos que hacer absolutamente nada especial ya que la implementación del MID se encarga de hacer todas las actualizaciones gráficas en memoria para posteriormente, volcarlo en pantalla. En el caso de que el método retorne false, nos indicaría que el dispositivo no es capaz de implementar esta técnica. En este caso es posible implementarla por nosotros mismos. Para ello, lo que haremos será crear una imagen mutable del tamaño de la pantalla del MID y efectuar todas las operaciones gráficas en el objeto Image para, posteriormente volcar el contenido de esta imagen por pantalla.
1.- Crear la imagen mutable del tamaño de la pantalla.
Image displaysecundario;
if (! isDoubleBuffered()){
displaysecundario= Image.createImage(getWidth(),getHeight());
}
2.- Realizar todas las actualizaciones en el objeto Image dentro del método paint(Graphics).
protected void paint(Graphics g){
Graphics displayprimario = g;
g = displaysecundario.getGraphics();
// Realizamos todas las operaciones para actualizar la pantalla en g.
...
//Realizamos el volcado en pantalla
displayprimario.drawImage(displaysecundario,0,0,Graphics.LEFT | Graphics.TOP);
}