我有两个线程用于下载和其他用于显示数据在布局中有一个取消按钮我想当我点击取消按钮下载线程停止我怎么能这样做
final Thread parseThread=new Thread(new Runnable() {
public void run()
{
count=1;
searchResult.clear();
Log.v("url","++"+"http://wap.vinmonopolet.no/vareutvalg/sok?query="+v.getText());
Log.v("searchText","searchText "+ v.getText());
downloader("http://wap.vinmonopolet.no/vareutvalg/sok?query="+v.getText());
//if(msearchCancel)
}
});
parseThread.start();
Thread displayThread = new Thread(new Runnable() {
public void run() {
try {
if(msearchCancel)
parseThread.interrupt();
else
parseThread.join();
}
catch (InterruptedException e)
{
e.printStackTrace();
}
mHandler.post(new Runnable() {
public void run()
{
list_ed=new EfficientAdapter(getApplicationContext());
searchList.setAdapter(list_ed);
progress_waiting1.setVisibility(ProgressBar.GONE);
}
});
}
});
displayThread.start();
答案 0 :(得分:0)
首先,在自己的线程中使用AsyncTask执行任务,它更容易,并为您处理一些低级别的东西。
然后,在您的线程(或AsyncTask中的后台任务)中,您需要定期检查主线程请求是否取消。在AsyncTask中,它是isCancelled方法。
如果检测到取消请求,则尽快退出线程的功能,以便该线程可以关闭。否则,在AsyncTask.cancel的情况下,取消将被阻止,直到后台任务(线程)正常结束。