Comments (15)
报什么错?问问题的时候能不能描述清楚一点呀?起码你得把报错信息贴出来吧
from downloadx.
我看你的demo里监听状态都是传的lifecycleowner 所以我想问一下退出当前Activity或者Fragment后能否继续监听下载状态
val item = adapter.getItem(position)
val downloadTask = GlobalScope.download(
checkHttpUrl(item.url),
item.name,
"$DEFAULT_SAVE_PATH/map"
)
downloadTask.start()
我使用GlobalScope线程开启下载任务时,退出了当前fragment之后下载任务就停止了
from downloadx.
你用GlobalScope去下载,页面销毁仍然会继续下载,但是进度监听肯定是跟你页面生命周期绑定的,不然页面销毁了还继续监听下载进度更新UI,不就内存泄露了吗?
from downloadx.
所以你的目的是什么?你能描述一下你的业务场景吗?
from downloadx.
不是 我是说页面销毁后下载任务就停止了
from downloadx.
不会的,使用GlobalScope,页面销毁下载不会停止
from downloadx.
demo中有一个TestActivity,你可以打开它验证一下,点击开始下载后退出TestActivity,等待一段时间后你可以看到下载目录中的下载文件
from downloadx.
之前确实是我代码的问题导致页面销毁停止,但是我还有个问题为什么你的demo源码中onAttach绑定的downloadTask的对象与button点击事件的downloadTask对象是同一个? 点击button的时候按照你的代码不是应该会new一个全新的对象吗
onAttach {
val downloadTask = GlobalScope.download(data.apkUrl)
data.progressJob?.cancel()
data.progressJob = downloadTask.state()
.onEach {
itemBinding.button.setState(it)
Log.e("========downloadTask","$downloadTask")
Log.e("========data","$data")
}
.launchIn(lifecycleScope)
}
itemBinding.button.setOnClickListener {
val downloadTask = GlobalScope.download(data.apkUrl)
Log.e("========downloadStart","$downloadTask")
when {
downloadTask.isSucceed() -> {
installApk(downloadTask.file()!!)
}
downloadTask.isStarted() -> {
downloadTask.stop()
}
else -> {
downloadTask.start()
Log.e("========data","$data")
}
}
}
from downloadx.
会根据url来判断是不是同一个下载任务,如果url相同,则不会创建新的task
from downloadx.
你代码怎么写的?贴出来看看
from downloadx.
offlineMapAdapter.setOnItemChildClickListener { adapter, view, position ->
if (view.id == R.id.iv_download) {
val item = adapter.getItem(position) as Item
val downloadTask = GlobalScope.download(
checkHttpUrl(item.url),
item.name,
"$DEFAULT_SAVE_PATH/map"
)
L.d("========url:${checkHttpUrl(item.url)}")
L.d("========downLoadTask:$downloadTask")
when {
downloadTask.isSucceed() -> {
}
downloadTask.isStarted() -> {
downloadTask.stop()
}
else -> {
downLoadService()
downloadTask.start()
}
}
}
}
from downloadx.
你断点调试一下呢,没看出有啥问题 😂
from downloadx.
private val taskMap = ConcurrentHashMap<String, DownloadTask>()我每次点击的时候这个map的size都是0
from downloadx.
按理说我第一次初始化的时候就创建了所有的downloadTask 但是每次调用这个downloadConfig.taskManager.add(task)方法时 这个map的size都是空的
from downloadx.
找到问题了😂 DefaultTaskManager这个manager应该是是静态的object 我看你代码里写的是class
from downloadx.
Related Issues (20)
- 星宇牛B
- 支持断点下载不 HOT 2
- 希望能改善添加新功能
- 代码写的很好,但使用测试api和弃用的api有点接受不了,不敢用于实际项目中。
- 下载成功后仍回调多次 HOT 1
- 请问能否适配AndroidQ的下载 HOT 1
- 下载过程中断网崩溃 HOT 1
- 下载中断好几次什么时候修复一些
- 下载失败
- 是否可以自定义 Referer HOT 1
- 多任务并发下载 HOT 1
- 下载失败 HOT 5
- 重复回调问题 HOT 12
- 断点续传失败
- 暂停下载后重新下载失败 HOT 7
- 能否支持Android 10 以上uri地址存储 HOT 4
- 下载大文件时,实时进度一直不变 HOT 1
- 能否将Failed状态下的Exception传出来可以调用呢?
- When does m3U8 support, pause all, start all?
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from downloadx.