在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)
}
}
问题。虽然我关闭了应用程序:数据下载线程仍然活着。但是我需要这个线程在应用程序关闭后立即关闭。
有什么办法强制关闭它吗?或者其他任何标准的方式来下载数据?
答
使用与您的活动(或片段)生命周期关联的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方法完成后台任务。
你可以在'onPause()'方法中调用'thread.interrupt()'方法来停止线程,并为你的问题在慢速连接后发布logcat错误 – 2014-09-21 06:58:41