mirror of
https://github.com/kiwix/kiwix-android.git
synced 2025-08-03 10:46:53 -04:00
Improved the resuming of downloads.
* Improved the resuming download logic.
This commit is contained in:
parent
9b8abe5ab2
commit
1f55d95386
@ -20,7 +20,6 @@ package org.kiwix.kiwixmobile.core.downloader.downloadManager
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.app.DownloadManager
|
||||
import android.content.ContentUris
|
||||
import android.content.ContentValues
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
@ -562,9 +561,13 @@ class DownloadManagerMonitor @Inject constructor(
|
||||
put(COLUMN_CONTROL, control)
|
||||
put(DownloadManager.COLUMN_STATUS, status)
|
||||
}
|
||||
val uri = ContentUris.withAppendedId(downloadBaseUri, downloadId)
|
||||
context.contentResolver
|
||||
.update(uri, contentValues, null, null)
|
||||
.update(
|
||||
downloadBaseUri,
|
||||
contentValues,
|
||||
getWhereClauseForIds(longArrayOf(downloadId)),
|
||||
getWhereArgsForIds(longArrayOf(downloadId))
|
||||
)
|
||||
true
|
||||
} catch (ignore: Exception) {
|
||||
Log.e("DOWNLOAD_MONITOR", "Couldn't pause/resume the download. Original exception = $ignore")
|
||||
@ -572,6 +575,33 @@ class DownloadManagerMonitor @Inject constructor(
|
||||
}
|
||||
}
|
||||
|
||||
private fun getWhereArgsForIds(ids: LongArray): Array<String?> {
|
||||
val whereArgs = arrayOfNulls<String>(ids.size)
|
||||
return getWhereArgsForIds(ids, whereArgs)
|
||||
}
|
||||
|
||||
private fun getWhereArgsForIds(ids: LongArray, args: Array<String?>): Array<String?> {
|
||||
assert(args.size >= ids.size)
|
||||
for (i in ids.indices) {
|
||||
args[i] = "${ids[i]}"
|
||||
}
|
||||
return args
|
||||
}
|
||||
|
||||
private fun getWhereClauseForIds(ids: LongArray): String {
|
||||
val whereClause = StringBuilder()
|
||||
whereClause.append("(")
|
||||
for (i in ids.indices) {
|
||||
if (i > 0) {
|
||||
whereClause.append("OR ")
|
||||
}
|
||||
whereClause.append("_id")
|
||||
whereClause.append(" = ? ")
|
||||
}
|
||||
whereClause.append(")")
|
||||
return "$whereClause"
|
||||
}
|
||||
|
||||
private fun shouldUpdateDownloadStatus(downloadRoomEntity: DownloadRoomEntity) =
|
||||
downloadRoomEntity.status != Status.COMPLETED
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user