¿Cuál es la mejor manera de verificar si la vista es visible en la ventana?

¿Cuál es la mejor manera de verificar si la vista es visible en la ventana?

Tengo un CustomView que forma parte de mi SDK y cualquiera puede agregar CustomView a sus diseños. Mi CustomView está realizando algunas acciones cuando el usuario lo ve periódicamente. Por lo tanto, si la vista se vuelve invisible para el usuario, entonces debe detener el temporizador y, cuando vuelva a ser visible, debería reiniciar su curso.

Pero desafortunadamente no hay una forma segura de verificar si mi CustomView se vuelve visible o invisible para el usuario. Hay algunas cosas que puedo revisar y escuchar:

onVisibilityChange //it is for view's visibility change, and is introduced in new API 8 version so has backward compatibility issue
onWindowVisibilityChange //but my CustomView can be part of a ViewFlipper's Views so it can pose issues
onDetachedFromWindows //this not as useful
onWindowFocusChanged //Again my CustomView can be part of ViewFlipper's views.
Entonces, si alguien se ha enfrentado a este tipo de problemas, arroje algo de luz.

Respuestas a la pregunta(3)

Su respuesta a la pregunta