public void run() {
synchronized (cancelLock) {
if(isCancel) {
return;
} else {
isRunning = true;
}
}
File file = new File(filePath);
ImageDownloadListener.DownloadResult downloadResult;
if(file.exists()) {
downloadResult = ImageDownloadListener.DownloadResult.FILE_EXISTS;
} else {
if(url == null || url.trim().equals("")) {
downloadResult = ImageDownloadListener.DownloadResult.URL_EMPTY;
} else {
OutputStream outputStream = null;
HttpURLConnection httpURLConnection = null;
try {
httpURLConnection = (HttpURLConnection) new URL(url).openConnection();
httpURLConnection.setConnectTimeout(5000);
httpURLConnection.setReadTimeout(5000);
httpURLConnection.setRequestMethod("GET");
int responseCode = httpURLConnection.getResponseCode();
if(responseCode == 200) {
InputStream inputStream = httpURLConnection.getInputStream();
synchronized (lock) {
file.getParentFile().mkdirs();
file.createNewFile();
}
outputStream = new FileOutputStream(file);
byte[] buffer = new byte[1024];
int length = -1;
int totalSize = httpURLConnection.getContentLength();
int currentSize = 0;
long lastNotify = System.currentTimeMillis();
while ((length = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, length);
currentSize += length;
if((System.currentTimeMillis() - lastNotify) > 200) {
new UiTaskProcess(totalSize, currentSize).execute();
lastNotify = System.currentTimeMillis();
}
}//此处有陷阱 如果文件流为空
outputStream.flush();
new UiTaskProcess(totalSize, currentSize).execute();
downloadResult = ImageDownloadListener.DownloadResult.SUCCESSFUL;
} else {
file.deleteOnExit();
downloadResult = ImageDownloadListener.DownloadResult.FAILED;
}
} catch (IOException e) {
e.printStackTrace();
if(outputStream != null)
try {
outputStream.flush();
} catch (IOException e1) {
e1.printStackTrace();
}
file.delete();
downloadResult = ImageDownloadListener.DownloadResult.FAILED;
} finally {
closeQuietly(outputStream);
if(httpURLConnection != null)
httpURLConnection.disconnect();
}
}
new UiTaskResult(downloadResult).execute();
}
}
相关推荐
Android工程文件
Android Studio项目。Android学习——基于百度定位SDK(LBS)实现定位功能
Android源码下载
最近在做Monkey二次开发的工作,边弄边在这里记录下(多平台发布),顺便可以和大家一起讨论下;Monkey的编译依赖于Android源码,所以要修改Monkey后打新jar包,需要完整的Android源码环境。
50个经典安卓项目源码
50个经典安卓项目源码 50个经典安卓项目源码 50个经典安卓项目源码
Android AOSP源码环境搭建及项目下载
以下仅作为公司项目下载过程记录,仅供参考。针对个人对AOSP源码下载过程,建议查看 https://source.android.google.cn/source/downloading Gerrit环境搭建 1.生成SSH Key以及设置git用户名邮箱 Linux/cgywin/Git Bash下输入ssh-keygen一路回车生成Key。 cat ~/.ssh/id_rsa.pub并把秘钥加入到gerrit的public keys中。 public keys的具体地址是在gerrit的set
android项目源码集合
android 完整项目源码,各种小工具聚合,仅用于研究学习学习
Androidstudio项目文件介绍.图
Androidstudio项目文件介绍指示图!详细介绍俺安卓项目问价的含义,新手入!
超级简单的Android源码下载
方法一:根据官网教程下载 官网文档:https://source.android.com/source/downloading 下载方法文档已经写的很清楚了,源码会分为超级多个git库,所以谷歌搞了个叫 repo 的工具(windows可以试下用这个https://github.com/esrlabs/git-repo),可以集中下载管理,超级简单,但国外的东西通常都会有乱七八糟的问题出现,可以自...
RT-Thread实战:手把手教你用STM32F04ZGT6通过SPI驱动BMI088(附完整工程)
本文详细介绍了如何使用RT-Thread操作系统在STM32F04ZGT6上通过SPI接口驱动BMI088高性能6轴惯性传感器(包含陀螺仪和加速度计)。从硬件连接到软件配置,再到数据采集与处理,提供了完整的开发指南和优化技巧,帮助开发者快速实现精确的姿态测量功能。
安卓下载流程
Android Stuid的下载流程与基础知识了解-
金融行业软件测试面试题(含答案)
6、假如发现了一个BUG,跟开发本身没什么关系,涉及到理念,需求问题,如何解决?11、假如要你测试6个月期限的p2p借款产品,你应该怎么设计案例,说出测试点。17、如果京东有一个购物网页给你,你要怎么进行测试?31、我们公司自动化测试用的语言是Java,Java你不会,该怎么办?23、你们测试用的测试环境是谁给的?24、如果领导分配你的任务超出负荷,领导高估了你的能力,怎么办。26、给你一个模块测试,只有一个星期的时间你如何有效率地完成?29、如果你组长的用例写错了,但他认为是对的,你怎么处理?
从ISCXTor2016到CICIDS2017:手把手教你下载和使用UNB的网络安全数据集
本文详细介绍了UNB大学发布的ISCXTor2016和CICIDS2017等网络安全数据集的下载与使用方法,特别适合加密流量识别和网络行为分析研究。文章提供了多种高效获取路径、文件结构解析及实战分析示例,帮助研究者快速上手这些真实场景捕获的精细标注数据集。
Android项目(完整版+免费版)
Android项目–关于星座相关的app 第一部分–界面效果图 页面一:(点击页面任意一个星座图标会显示相应的数据) 页面二:(可以更换男生或女生的星座,点击开始配对分析,能跳转相应的页面,并显示相应的数据分析) 页面三:(点击任意一个图标,跳转到相应的页面,展示这一年的运势数据) 页面四:(点击头像,能更换相应的星座,下一次登录,仍然会保存) 第二部分–图片素材 第三部分–代码 XingZuoWeb(我的项目名称)—>app—>src—>main–>java–>co
C++继承与多态 - 继承多态原理01
C++继承多态原理讲解
在Android studio中创建第一个安卓项目后,报错Could not install Gradle distribution from XXX,下载的文件应该放在哪里的问题解决
核心解决方案:将文件放入Gradle缓存目录Gradle有一个本地缓存目录,Android Studio在尝试下载Gradle时,会先检查这个目录是否已经存在对应的文件。您需要做的就是把下载好的ZIP文件放到这个缓存目录中。
科普:Frenet坐标
理想情况下,描述这种常见驾驶行为在数学上应该很容易。一种方法是使用新的坐标系。现在,而不是放下一个正常的笛卡尔网格,我们做一些事情,就像你看到下面…Frenet Coordinates是一种以比传统x,y笛卡尔坐标更直观的方式表示道路位置的方式。如果我们想要方程式来描述这个动作,那就不容易了!想象一下像下面这样一条弯曲的道路,笛卡尔坐标系就位于它的上面…使用这些笛卡尔坐标,我们可以尝试描述车辆通常在路上行驶的路径…那么在Frenet坐标系下呈现的典型轨迹是什么样的?在这里,我们定义了一个新的坐标系统。
微信小程序 - 完美解决“code“:“NO_AUTH“,“message“:“商户号该产品权限未开通,请前往商户平台>产品中心检查后重试“(微信小程序报错问题排查解决)
微信小程序NO_AUTH: 商户号该产品权限未开通,请前往商户平台>产品中心检查后重试?微信小程序提示商户号该产品权限未开通,请前往商户平台>产品中心检查后重试,微信小程序"code":"NO_AUTH"错误码怎么解决,报错信息如下:httpResponseBody[{"code":"NO_AUTH","message":"商户号该产品权限未开通,请前往商户平台>产品中心检查后重试"}],微信小程序支付问题,如何解决这个问题,虚拟支付商户号,虚拟支付商户号里面没有产品支付的页面,排查商户号没问题,商户号配置
Unity3D六、unity3d assetbundle打包和从服务器加载下载资源之五将不带资源的unity3d项目文件导出成Android项目文件
①下载安卓的ADT和SDK包。 我们这里下载绑定(bundle)的包. 解压的时候出错,忽略就好。 解压完成后重命名该文件夹。 build-tools里面有两个文件夹要删除。 只留下如下文件和文件夹: platforms文件夹不为空: ②在unity3d设置和导出Android项目文件。 等待进度...
Open-AutoGLM 实战:手把手教你用 AI 操作手机「喂饭教程」
Open-AutoGLM 是一个由智谱AI开源的手机操作智能体框架,由手机端智能助手框架Phone Agent和9B大小的模型AutoGLM-Phone-9B组成,借助ADB自动执行点击、滑动、输入等操作——用户只需用自然语言描述任务,系统便能自动规划并完成整个操作流程。
使用android-async-http开源项目 上传、下载文件
目录标题准备工作文件下载文件上传可能遇到的问题 准备工作 1、下载android-async-http.jar 2、将项目结构更换为project ,app→libs→导入jar包,右击该jar包→add to library 文件下载 //使用AsyncHttpClient 下载文件 public void asyncDown(View view) { AsyncHttpClient asyncHttpClient = new AsyncHttpClient();
YOLOv12改进入门篇 | 手把手讲解改进模块如何实现高效涨点,以SimAM注意力模块为例
本文记录的是。SimAM注意力模块通过优化能量函数来获得每个神经元的三维权重,而或增加计算复杂度。若是有轻量化需求的小伙伴,无参的注意力模块也许是一个不错的选择。
Data-Structures-and-Algorithm-Analysis-in-Java.pdf
作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...
【亲测免费】 Android最佳文件下载库Fetch项目下载与安装教程
--- ## 1. 项目介绍 Fetch是一款专为Android设计的高效、可定制的文件下载管理器。它提供了一个简洁易用的API,支持后台连续下载、多任务并发、暂停与恢复下载、网络类型选择、失败重试、下载分组等特性。Fetch通过通知中心支持进度跟踪,并兼容存储访问框架、内容提供者以及URI,极大简化了文件下载与管理流程。 ## 2. 项目下载位置 要获取Fetch项目,您只需要访问其在G...
Outlook Express 6 (OE6) for Win7/Win8/Win10
英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。
【免费下载】 NS-USBloader Mobile 项目下载及安装教程
NS-USBloader Mobile 是一个 Android 应用程序,旨在实现与原始 NS-USBloader 相同的功能。它允许用户通过 USB-OTG 电缆将文件上传到 Nintendo Switch 设备,支持 Tinfoil、Awoo 和 GoldLeaf 等应用程序。该项目是开源的,遵循 GPL-3.0 许可证。 ## 2. 项目下载位置 NS-USBloader Mobile ...
lwip-2.0.3
lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。
jdk-8u144-linux-x64.tar.gz.
该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包
【免费下载】 安卓期末项目作业 - Android Studio
安卓期末项目作业 - Android Studio 【下载地址】安卓期末项目作业-AndroidStudio 本仓库提供了一个安卓期末项目作业的资源文件,适用于使用Android Studio进行开发的同学们。该项目作业旨在帮助学生巩固和应用在安卓开发课程中所学的知识,完成一个完整的安卓应用程序 ...
关于Android Studio3.0版本把项目打包生成apk文件(安卓手机下载可运行)
为了能在手机上体验开发的项目实际体验效果,故而查找学习了,如何生成apk文件。方法如下:首先在菜单栏点击Build,再点击Generate Signed APK得到下图,并点击Create new...下面Key store path:生成的jsk文件等路径设置Password:自己设置的密码Comfirm:确认密码Alias:别名Validity(years):软件的有效期当点击Key stor...
已解决:安卓刚打开新项目的时候,会下载该项目要求的sdk gradle,开了科学上网也慢
我们下载海外sdk都需要科学上网,如果我们在开起科学上网之前就打开了Android studio,并触发了下载gradle,那么下载的gradle文件夹就会创建,里面会保存一些下载相关的信息,导致科学上网不对其生效,这时,我们需要在开启,科学上网之后,可以试试,不保证大家都能用,只是一种情况下的使用方法。1、我们先关闭Android studio,2、然后将下图文件夹下的所有文件都删掉,3、然后再打开安卓项目,
解决Capacitor项目中Android平台文件下载难题:从原理到实战方案
你是否在Capacitor开发中遇到Android文件下载后无法访问的问题?本文将系统分析文件下载的底层机制,提供3种实用解决方案,并通过完整代码示例帮助你彻底解决跨平台文件访问难题。读完本文你将掌握:Android存储权限管理、FileProvider配置技巧、Capacitor文件系统API的高级用法。 ## 问题根源:Android存储机制与权限限制 Android 10引入的分区存储(...
1984



被折叠的 条评论
为什么被折叠?



