我正在创建一个简单的类,它使用HttpURLConnection发送请求并接收响应。我想添加interrupt()方法来中断当前请求(假设请求在AsyncTask中运行,并且从主线程调用interrupt())。有两个进程需要花费很长时间,我不知道如何中断它们:
- 向输出流写入
- 从输入流读取
downloadThread = new Thread(new Runnable() {
@Override
public void run() {
try {
buffer = readFully(connection.getInputStream());
} catch( Exception e ) {
e.printStackTrace();
}
}
});
downloadThread.start();
readFully()方法是:
public byte[] readFully(InputStream input) throws IOException {
byte[] buffer = new byte[8192];
int bytesRead;
ByteArrayOutputStream output = new ByteArrayOutputStream();
while ((bytesRead = input.read(buffer)) != -1) {
output.write(buffer, 0, bytesRead);
}
return output.toByteArray();
}
如何停止读取输入流(换句话说,下载)? Thread的stop()方法已经被弃用,不能使用。到处都写着我应该定期检查线程是否应该停止并手动停止它。但是当整个时间都在执行以下代码时,我该怎么办(如果我理解正确):
connection.getInputStream()
我认为这是同样类型的问题,但没有答案(参见解决方案的评论):如何在Android上停止HttpURLConnection连接。请不要向我推荐某些REST库。我真的很想知道如何处理这个问题。谢谢;)。