mirror of
https://github.com/kiwix/kiwix-android.git
synced 2025-09-08 06:42:21 -04:00
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:
parent
092d060fb3
commit
86658fb58e
@ -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) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user