Entiendo todo lo que me decís pero creo que no me sirve ninguna voy a intentar explicar concretamente como uso el hilo a ver si podeis ayudarme un poco mas, de cualquier forma os agradezco el interes.
El caso es que yo cuando llamo al finish() desde el hilo principal (que activa un flag para salir del bucle principal del AsyncTask), uso unos datos que procesa este hilo, entonces justo despues de finish() necesito esperar a que el AsyncTask termine la última iteración del bucle y guarde los datos procesados en otra clase, (lo que desde la versión de escritorio del mismo programa hago con un join() en el hilo principal), para seguir el flujo normal del programa.
Uso finish() en lugar de cancel(true) simplemente porque con cancel(true) pierdo la posibilidad de comprobar la variable status de AsyncTask.
La verdad es que este problema me trae un poco de cabeza, porque solucionandolo casi daria por acabado mi proyecto final de carrera y a disfrutar entonces de lo que queda de verano, pero no se si me explico del todo bien para que podais ayudarme, de todas formas muchisimas gracias.
Saludos