Para estar seguro de que ha acabado necesitas el onPostExecute, que ya se ejecuta en el hilo principal (UI Thread). Cuando le des al botón de parar, le mandas parar al async task poniendo su flag running a false (o la que uses). Cuando acaba, en el onPostExecute metes el código que sea que quieres ejecutar, sabiendo que está acabado y que estás en el hilo principal. Ahí actualizas la interfaz y lanzas otro asynctask si quieres.
O sigo sin entenderlo