Manera limpia para implementar el gradual desvanecimiento de brillo en Android?

Por el momento tengo código para atenuar los ajustes de brillo que se parece a algo así:

new Thread() { public void run() { for (int i = initial; i < target; i++) { final int bright = i; handle.post(new Runnable() { public void run() { float currentBright = bright / 100f; window.getAttributes().screenBrightness = currentBright; window.setAttributes(window.getAttributes()); }); } try { sleep(step); } catch (InterruptedException e) { e.printStackTrace(); } } } }.start(); 

No estoy seguro si eso se considera una buena metodología (he considerado usar ASyncTask, pero no puedo ver los beneficios en este caso). ¿Hay una mejor manera de lograr la atenuación de luz de fondo?

EDIT: Ahora estoy usando un TimerTask como sigue:

 new Timer().schedule(new TimerTask() { @Override public void run() { final float currentBright = counter[0] / 100f; handle.post(new Runnable() { public void run() { window.getAttributes().screenBrightness = currentBright; window.setAttributes(window.getAttributes()); if (++counter[0] <= target) { cancel(); } } }); } }, 0, step); 

La razón por la que uso una matriz para el contador es porque necesita ser final para ser accedido en el Runnable , pero necesito modificar el valor. Esto utiliza menos CPU, pero aún más de lo que me gusta.

EDIT2: Aaa y un tercer intento. ¡Gracias a CommonsWare por el consejo! (Espero haberlo aplicado correctamente!)

  handle.post(new Runnable() { public void run() { if (counter[0] < target) { final float currentBright = counter[0] / 100f; window.getAttributes().screenBrightness = currentBright; window.setAttributes(window.getAttributes()); counter[0]++; handle.postDelayed(this, step); } } }); 

¡Gracias!

Cómo sobre la reducción del brillo a la mitad en cada iteración.

Entonces el bucle se completará en O (log n) en lugar de O (n) en la solución actual.

Desde Honeycomb puedes hacer cosas mentir esto usando Property Animation . Esta publicación en el blog de desarrolladores de Android habla sobre todo en algún detalle .

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.