Según la documentación de Oracle devuelve false si la conexión está establecida, en el momento que se cierre la conexión retorna valor true.
No estoy familiarizado con Android, como he dicho, pero si no se es capaz de con una función específica saber el estado de la conexión, por qué no pruebas a desconectar y a realizar una comunicación con el servidor y si te da error ya sabes que se ha desconectado?
Es una solución muy poco ortodoxa, pero no se me ocurre nada, la documentación dice lo contrario a lo que te pasa.. xD
A ver si realmente no estás finalizando la conexión como toca.
Edit: Por lo que leo, la solución que te he dado se usa bastante, al menos eso se dice por stackoverflow, también que ambos métodos te retornan eso porque miran el estado de conexión del socket, no de la conexión. Deberías terminar la conexión, cerrar el socket y comprobar si realmente hay envío de datos y si la funcion isClosed() ya da un valor true.
De todos modos también hay que tener en cuenta que hay un valor definido por CLOSE_WAIT que determina el tiempo que tardará la conexión en finalizar.
Hablo a ciegas y lo que puedo leer, lo siento por no poder hacer más