diff --git a/app/src/main/java/com/gh/common/util/DownloadObserver.kt b/app/src/main/java/com/gh/common/util/DownloadObserver.kt index a5d07c6112..300a50a294 100644 --- a/app/src/main/java/com/gh/common/util/DownloadObserver.kt +++ b/app/src/main/java/com/gh/common/util/DownloadObserver.kt @@ -53,6 +53,7 @@ object DownloadObserver { private const val CORE_EVENT_DOWNLOAD_COMPLETE_LOGGED = "CORE_EVENT_DOWNLOAD_COMPLETE_LOGGED" private val mRetryableHashMap = hashMapOf() + private val mRetryableProgressMap = hashMapOf() /** * 当下载任务是 预约上线提醒 触发的,则所有弹窗均不显示 @@ -146,7 +147,8 @@ object DownloadObserver { || DownloadStatus.timeout == status ) { if (mRetryableHashMap[downloadEntity.url] == true - && NetworkUtils.isWifiConnected(HaloApp.getInstance().application) + && (NetworkUtils.isWifiConnected(HaloApp.getInstance().application) + || NDownloadBridge.isDownloadViaTrafficAllowed(downloadEntity)) ) { downloadManager.resumeDownload(downloadEntity.url) mRetryableHashMap[downloadEntity.url] = false @@ -257,6 +259,7 @@ object DownloadObserver { } mRetryableHashMap.remove(downloadEntity.url) + mRetryableProgressMap.remove(downloadEntity.url) EventBus.getDefault().post(EBDownloadStatus("done", "", "", "", downloadEntity.packageName, "")) } @@ -264,7 +267,9 @@ object DownloadObserver { DownloadNotificationHelper.addOrUpdateDownloadNotification(downloadEntity) // 如果已下载大小发生变化,表示成功恢复下载,则重置重试标记 - if (status == DownloadStatus.downloading) { + if (status == DownloadStatus.downloading + && downloadEntity.progress != mRetryableProgressMap[downloadEntity.url]) { + mRetryableProgressMap[downloadEntity.url] = downloadEntity.progress mRetryableHashMap[downloadEntity.url] = true } } diff --git a/app/src/main/java/com/gh/ndownload/NDownloadBridge.kt b/app/src/main/java/com/gh/ndownload/NDownloadBridge.kt index 484051796d..801db55f85 100644 --- a/app/src/main/java/com/gh/ndownload/NDownloadBridge.kt +++ b/app/src/main/java/com/gh/ndownload/NDownloadBridge.kt @@ -416,7 +416,7 @@ object NDownloadBridge : InnerDownloadListener, IErrorRetryHandler { }, GlobalDownloadConfig.ERROR_RETRY_INTERVAL) } - private fun isDownloadViaTrafficAllowed(downloadEntity: DownloadEntity?): Boolean { + fun isDownloadViaTrafficAllowed(downloadEntity: DownloadEntity?): Boolean { val mNetworkMobileStatus = "2G3G4G5G" val networkStatus: String? = downloadEntity?.meta?.get(DownloadEntity.NETWORK_STATUS_KEY) Utils.log("download network status$networkStatus") diff --git a/ndownload b/ndownload index 91a183a48b..02ad0aa911 160000 --- a/ndownload +++ b/ndownload @@ -1 +1 @@ -Subproject commit 91a183a48b9fc34fc9dc7b05e1a3046366417d74 +Subproject commit 02ad0aa911b20303b2d27a67b25461e223e37c79