length = is.read(buffer) length =1 这个是什么原因啊
public void run() {
// 数据库插入线程信息
// 线程 下载位置 写入位置
// 开始下载了
HttpURLConnection conn = null;
if (!mDao.isExists(threadInfo.getUrl(), threadInfo.getId())) {
mDao.insertThread(threadInfo);
}
try {
URL url = new URL(threadInfo.getUrl());
conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(3000);
conn.setRequestMethod("GET");
int start = threadInfo.getStart() + threadInfo.getFinised();
conn.setRequestProperty("Range", "bytes=" + start + "-"
+ threadInfo.getEnd());
File file = new File(DownloadService.DOWNLOAD_PATH,
fileInfo.getName());
raf = new RandomAccessFile(file, "rwd");
raf.seek(start);// 设置文件的写入位置
// 开始下载
Intent intent = new Intent(DownloadService.ACTION_UPDATE);
mFinished += threadInfo.getFinised();
// 部分下载 206
if (conn.getResponseCode() == HttpStatus.SC_PARTIAL_CONTENT) {// 读取数据
is = conn.getInputStream();
byte[] buffer = new byte[1024 * 4];
int length = -1;
long time = System.currentTimeMillis();
while ((length = is.read(buffer)) != -1) {
raf.write(buffer, 0, length);
Log.e("length",length+"");
// 发送进度
mFinished += length;
Log.e("mFinished",mFinished+"");
if (System.currentTimeMillis() - time > 500) {
time = System.currentTimeMillis();
intent.putExtra("finished", mFinished * 100
/fileInfo.getLength());
Log.e("==1",intent.toString());
context.sendBroadcast(intent);
}
Log.e("isPause",isPause+"");
if (isPause) {
mDao.updateThread(threadInfo.getUrl(),
threadInfo.getId(), mFinished);
return;
}
}
}
// 写入到文件
// 下载暂停 保存进度
// 下载进度发送广播
mDao.deleteThread(threadInfo.getUrl(), threadInfo.getId());
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
is.close();
raf.close();
} catch (IOException e) {
e.printStackTrace();
}
conn.disconnect();
}
}