ssseasonnn / RxDownload

A multi-threaded download tool written with RxJava and Kotlin
Apache License 2.0
4.14k stars 612 forks source link

订阅状态更新 导致页面卡顿问题 #323

Open UsingMisz opened 4 years ago

UsingMisz commented 4 years ago

taskManager.subscribe

在刷新进度条时候刷新页面导致卡顿问题

UsingMisz commented 4 years ago

因为如果在主线程中更新大量的进度时 整个页面在操作就会出现卡顿 大佬可以订阅在异步线程吗 之后在转到主线程中 或者做一个延迟处理

zhangnin commented 3 years ago

卡顿问题我是修改TaskManager里的subscribeDownload方法来解决,我改了1s一次: 原来的: private fun subscribeDownload() { downloadDisposable = connectFlowable .doOnSubscribe { downloadHandler.onStarted() } .subscribeOn(mainThread()) .observeOn(mainThread()) .doOnNext { downloadHandler.onDownloading(it) } .doOnComplete { downloadHandler.onCompleted() } .doOnError { downloadHandler.onFailed(it) } .doOnCancel { downloadHandler.onPaused() } .subscribeBy() } 修改后: private fun subscribeDownload() { downloadDisposable = connectFlowable.sample(1, SECONDS) .doOnSubscribe { downloadHandler.onStarted() } .subscribeOn(mainThread()) .observeOn(mainThread()) .doOnNext { downloadHandler.onDownloading(it) } .doOnComplete { downloadHandler.onCompleted() } .doOnError { downloadHandler.onFailed(it) } .doOnCancel { downloadHandler.onPaused() } .subscribeBy() }

740599886 commented 1 year ago

我这里也有ANR 是因为耗时操作在主线程中吗 .subscribeOn(mainThread()) .observeOn(mainThread())

Teemo100 commented 1 year ago

邮件已收到,三日内拜读

740599886 commented 1 year ago

1687680338990 这是日志

740599886 commented 1 year ago

我把这里改成了IO 线程 然后改了两个地方的断言 效果倒是不影响 想问下 这个有什么其他影响吗 c1ea9640178c5c7be209b63c6bdd56e 974d1e9539b080a79a87f114a6b695d 755e58d56ed736710fc823eea84e409 af22f0c7258e6dedbfa50b6cb4bb6e9 8054129b9e6bf9696dcf7f6aed40c66