Cómo interrumpir un hilo de Android
Cuando utiliza Thread o AsyncTask en segundo plano para manejar algunas operaciones que requieren mucho tiempo, es posible que desee controlar estos subprocesos, incluida la interrupción de subprocesos. En muchos casos, cuando el usuario inicia el programa, al mismo tiempo se inicia un hilo en segundo plano para cargar el contenido. Sin embargo, cuando el usuario abandona el programa, el hilo debe interrumpirse, porque ahora el usuario ya no presta atención al programa y, al mismo tiempo, ya no presta atención a los resultados del procesamiento del hilo, y los hilos ocupan recursos del sistema. Si el hilo no se interrumpe a tiempo, provocará un desperdicio de recursos del sistema. Además, puede utilizar el método Thread.interrupt() o AsyncTask.cancel(), pero esto no interrumpirá el hilo inmediatamente, por lo que solo puede interrumpir y salir en su propio hilo. En muchos casos, los subprocesos que se ejecutan en segundo plano tienen un bucle principal, por lo que puede determinar si el subproceso se interrumpe en el bucle y, de ser así, salir del bucle, finalizando así el proceso. Por ejemplo, si un hilo descarga un hilo, puede usar el método isInterrupted() para determinar si el hilo actual está interrumpido. thread=newThread(){publicvoidrun(){ while(!isInterrupted()&&hasMoreDataToDownload()){downloadAndWriteSomeMore();}if(isInterrupted()){deleteThePartiallyDownloadedFile();}else{callBack();}}}thread.start ();thread.interrupt(); Si el hilo se interrumpe, llame a la función deleteThePartiallyDownloadedFile() para eliminar los archivos que no se han descargado. Cuando el hilo no se interrumpe, se llama a la función callBack() y el controlador se puede utilizar para enviar información de finalización de la descarga. Si no tiene un bucle principal de este tipo en su hilo, por ejemplo, si simplemente está ejecutando una operación de consulta SQL que requiere mucho tiempo, puede llamarlo después de la operación de consulta para determinar si necesita finalizar el hilo.