在Android中强制关闭线程

问题描述:

在我的android应用程序中,我使用一个线程来下载一些数据。在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) 
    } 
} 

问题。虽然我关闭了应用程序:数据下载线程仍然活着。但是我需要这个线程在应用程序关闭后立即关闭。

有什么办法强制关闭它吗?或者其他任何标准的方式来下载数据?

+0

你可以在'onPause()'方法中调用'thread.interrupt()'方法来停止线程,并为你的问题在慢速连接后发布logcat错误 – 2014-09-21 06:58:41

使用与您的活动(或片段)生命周期关联的AsyncTask。

http://developer.android.com/reference/android/os/AsyncTask.html

假设你有你的AsyncTask称为T成员变量,它已经在您的活动或片段的其他地方开始,你可以做的onDestroy下列():

if ((t != null) && !t.isCancelled()) 
    { 
     boolean mayInterruptIfRunning = true; 
     t.cancel(mayInterruptIfRunning); 
     t = null; 
    } 

使用AsyncTask还有一个好处,即允许您在UI线程上安全地更新UI以获取进度报告,并且通过重写onProgressUpdate和onPostExecute方法完成后台任务。