Improved the query to DownloadManager.

* Removed the unnecessary query to download manager for previous downloads. Now we are only making request to active downloads which are in our download DAO.
This commit is contained in:
MohitMaliFtechiz 2024-12-16 15:19:27 +05:30 committed by Kelson
parent 092d060fb3
commit 86658fb58e

View File

@ -110,8 +110,9 @@ class DownloadManagerMonitor @Inject constructor(
{ {
try { try {
synchronized(lock) { synchronized(lock) {
if (downloadRoomDao.downloads().blockingFirst().isNotEmpty()) { val downloadingList = downloadRoomDao.downloads().blockingFirst()
checkDownloads() if (downloadingList.isNotEmpty()) {
checkDownloads(downloadingList)
} else { } else {
monitoringDisposable?.dispose() monitoringDisposable?.dispose()
} }
@ -128,21 +129,10 @@ class DownloadManagerMonitor @Inject constructor(
} }
@SuppressLint("Range") @SuppressLint("Range")
private fun checkDownloads() { private fun checkDownloads(downloadingList: List<DownloadModel>) {
synchronized(lock) { synchronized(lock) {
val query = DownloadManager.Query().setFilterByStatus( downloadingList.forEach {
DownloadManager.STATUS_RUNNING or queryDownloadStatus(it.downloadId)
DownloadManager.STATUS_PAUSED or
DownloadManager.STATUS_PENDING or
DownloadManager.STATUS_SUCCESSFUL
)
downloadManager.query(query).use { cursor ->
if (cursor.moveToFirst()) {
do {
val downloadId = cursor.getLong(cursor.getColumnIndex(DownloadManager.COLUMN_ID))
queryDownloadStatus(downloadId)
} while (cursor.moveToNext())
}
} }
} }
} }
@ -150,6 +140,7 @@ class DownloadManagerMonitor @Inject constructor(
@SuppressLint("Range") @SuppressLint("Range")
fun queryDownloadStatus(downloadId: Long) { fun queryDownloadStatus(downloadId: Long) {
synchronized(lock) { synchronized(lock) {
updater.onNext {
downloadManager.query(DownloadManager.Query().setFilterById(downloadId)).use { cursor -> downloadManager.query(DownloadManager.Query().setFilterById(downloadId)).use { cursor ->
if (cursor.moveToFirst()) { if (cursor.moveToFirst()) {
handleDownloadStatus(cursor, downloadId) handleDownloadStatus(cursor, downloadId)
@ -159,6 +150,7 @@ class DownloadManagerMonitor @Inject constructor(
} }
} }
} }
}
@SuppressLint("Range") @SuppressLint("Range")
private fun handleDownloadStatus(cursor: Cursor, downloadId: Long) { private fun handleDownloadStatus(cursor: Cursor, downloadId: Long) {