Android_断点续传

Android_断点续传

Android_断点续传

Android_断点续传
        servers如何回传给Activity:
Android_断点续传
Android_断点续传


 
private class DownloadThread extends Thread
{
private ThreadInfo mThreadInfo = null;

public DownloadThread(ThreadInfo mInfo)
{
this.mThreadInfo = mInfo;
}
@Override
public void run()
{
// 向数据库插入线程信息
if (!mDao.isExists(mThreadInfo.getUrl(), mThreadInfo.getId()))
{
mDao.insertThread(mThreadInfo);
}
HttpURLConnection connection = null;
RandomAccessFile raf = null;
InputStream inputStream = null;
try
{
URL url = new URL(mThreadInfo.getUrl());
connection = (HttpURLConnection) url.openConnection();
connection.setConnectTimeout(5000);
connection.setRequestMethod("GET");
// 设置下载位置
int start = mThreadInfo.getStart() + mThreadInfo.getFinished();
connection.setRequestProperty("Range",
"bytes=" + start + "-" + mThreadInfo.getEnd());
// 设置文件写入位置
File file = new File(DownloadService.DOWNLOAD_PATH,
mFileInfo.getFileName());
raf = new RandomAccessFile(file, "rwd");
raf.seek(start);
Intent intent = new Intent();
intent.setAction(DownloadService.ACTION_UPDATE);
mFinised += mThreadInfo.getFinished();
// 开始下载
if (connection.getResponseCode() == HttpStatus.SC_PARTIAL_CONTENT)
{
// 读取数据
inputStream = connection.getInputStream();
byte buf[] = new byte[1024 << 2];
int len = -1;
long time = System.currentTimeMillis();
while ((len = inputStream.read(buf)) != -1)
{
// 写入文件
raf.write(buf, 0, len);
// 把下载进度发送广播给Activity
mFinised += len;
if (System.currentTimeMillis() - time > 500)
{
time = System.currentTimeMillis();
intent.putExtra("finished", mFinised * 100 / mThreadInfo.getEnd());
mContext.sendBroadcast(intent);
}
// 在下载暂停时,保存下载进度
if (isPause)
{
mDao.updateThread(mThreadInfo.getUrl(), mThreadInfo.getId(), mFinised);
return;
}
}
// 删除线程信息
mDao.deleteThread(mThreadInfo.getUrl(), mThreadInfo.getId());
Log.i("DownloadTask", "下载完毕");
MainActivity.mMainActivity.handler.sendEmptyMessage(0);
}
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
try
{
if (connection != null)
{
connection.disconnect();
}
if (raf != null)
{
raf.close();
}
if (inputStream != null)
{
inputStream.close();
}
}
catch (Exception e2)
{
e2.printStackTrace();
}
}
}
}
Android_断点续传
Android_断点续传

Android_断点续传

Android_断点续传

Android_断点续传


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值