如何安全地停止线程?
downloadThread = new Thread(new Runnable() {
@Override
public void run() {
});
downloadThread.start();
}
答案 0 :(得分:3)
如果您使用Android sdk的AsyncTask
,则可以找到cancel()
,而不是使用普通线程来执行后台作业。
答案 1 :(得分:3)
中断线程。在线程的run()
方法中,检查不同逻辑块末尾的isInterrupted()
值。
例如,假设您的run()
方法可以分为三个逻辑步骤
- 创建网络连接,下载图像并将图像保存到文件。在每个步骤结束时,检查isCancelled()
并停止该操作,在该点停止所有状态。
class NetworkFetcherTask extends AsyncTask<String, Void, Void>{
public void doInBackground(String... params){
String url = params[0];
//Open connection if not cancelled
if(isCancelled()){
conn.close();
return;
}
NetworkConnection conn = new NetworkConnection();
//Download the image if not cancelled
if(isCancelled()){
conn.close();
result.discard();
return;
}
NetworkResult result = conn.fetchUrl(url);
conn.close();
//Save the image to a file if not cancelled
if(isCancelled()){
result.discard();
return;
}
File file = new File();
file.dump(result);
}
}
答案 2 :(得分:0)
最简单的似乎是将isRunning设置为false。