Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android中的强制关闭线程_Java_Android_Multithreading_Download - Fatal编程技术网

Java Android中的强制关闭线程

Java Android中的强制关闭线程,java,android,multithreading,download,Java,Android,Multithreading,Download,在我的android应用程序中,我使用线程下载一些数据 以下是当前工作代码的原型: void startThread() { thread = new Thread(this); thread.setPriority(Process.THREAD_PRIORITY_BACKGROUND); thread.start(); } @Override public void run() { while(application_running) {

在我的android应用程序中,我使用线程下载一些数据

以下是当前工作代码的原型:

void startThread()
{
    thread = new Thread(this);
    thread.setPriority(Process.THREAD_PRIORITY_BACKGROUND);
    thread.start();
}

@Override
public void run()
{
    while(application_running)
    {
        //download my data... (on slow server response, execution gets stuck here)
    }
}
当从服务器下载数据的速度非常慢时会出现问题。尽管我关闭了应用程序:数据下载线程仍然处于活动状态。但是我需要这个线程在应用程序关闭后立即关闭


有没有办法强行关闭它?或任何其他下载数据的标准方式?

使用与活动或片段生命周期相关的异步任务

假设AsyncTask有一个名为t的成员变量,并且该变量已在活动或片段中的其他位置启动,则可以在onDestroy中执行以下操作:

    if ((t != null) && !t.isCancelled())
    {
        boolean mayInterruptIfRunning = true;
        t.cancel(mayInterruptIfRunning);
        t = null;
    }
使用AsyncTask还有一个好处,即允许您在UI线程上安全地更新UI以进行进度报告,并在后台任务完成后覆盖onProgressUpdate和onPostExecute方法。

您可以在onPause方法中调用thread.interrupt以停止线程,对于连接缓慢的问题,请输入logcat错误