【发布时间】:2014-05-31 20:04:24
【问题描述】:
我正在创建一个简单的类,它使用 HttpURLConnection 向服务器发送请求并接收响应。我想添加中断当前请求的中断()方法(想象请求在 AsyncTask 中运行,并且从主线程调用中断())。有两个过程需要很多时间,我不知道如何中断它们:
- 写入输出流
- 从输入流中读取
假设我想中断从输入流中读取,我是这样读取的:
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()
我认为这是同一类型的问题,但没有答案(参见 cmets of solution): How to stop HttpURLConnection connect on Android 请不要让我参考一些 REST 库。我真的很想知道如何处理这个问题。谢谢;)。
【问题讨论】:
标签: android multithreading stream httpurlconnection interrupt