|
@@ -79,6 +79,7 @@ public class RNFetchBlobReq extends BroadcastReceiver implements Runnable {
|
79
|
79
|
}
|
80
|
80
|
|
81
|
81
|
public static HashMap<String, Call> taskTable = new HashMap<>();
|
|
82
|
+ public static HashMap<String, Long> androidDownloadManagerTaskTable = new HashMap<>();
|
82
|
83
|
static HashMap<String, RNFetchBlobProgressConfig> progressReport = new HashMap<>();
|
83
|
84
|
static HashMap<String, RNFetchBlobProgressConfig> uploadProgressReport = new HashMap<>();
|
84
|
85
|
static ConnectionPool pool = new ConnectionPool();
|
|
@@ -135,6 +136,13 @@ public class RNFetchBlobReq extends BroadcastReceiver implements Runnable {
|
135
|
136
|
call.cancel();
|
136
|
137
|
taskTable.remove(taskId);
|
137
|
138
|
}
|
|
139
|
+
|
|
140
|
+ if (androidDownloadManagerTaskTable.containsKey(taskId)) {
|
|
141
|
+ long downloadManagerIdForTaskId = androidDownloadManagerTaskTable.get(taskId).longValue();
|
|
142
|
+ Context appCtx = RNFetchBlob.RCTContext.getApplicationContext();
|
|
143
|
+ DownloadManager dm = (DownloadManager) appCtx.getSystemService(Context.DOWNLOAD_SERVICE);
|
|
144
|
+ dm.remove(downloadManagerIdForTaskId);
|
|
145
|
+ }
|
138
|
146
|
}
|
139
|
147
|
|
140
|
148
|
@Override
|
|
@@ -172,6 +180,7 @@ public class RNFetchBlobReq extends BroadcastReceiver implements Runnable {
|
172
|
180
|
Context appCtx = RNFetchBlob.RCTContext.getApplicationContext();
|
173
|
181
|
DownloadManager dm = (DownloadManager) appCtx.getSystemService(Context.DOWNLOAD_SERVICE);
|
174
|
182
|
downloadManagerId = dm.enqueue(req);
|
|
183
|
+ androidDownloadManagerTaskTable.put(taskId, Long.valueOf(downloadManagerId));
|
175
|
184
|
appCtx.registerReceiver(this, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
|
176
|
185
|
return;
|
177
|
186
|
}
|
|
@@ -438,6 +447,8 @@ public class RNFetchBlobReq extends BroadcastReceiver implements Runnable {
|
438
|
447
|
private void releaseTaskResource() {
|
439
|
448
|
if(taskTable.containsKey(taskId))
|
440
|
449
|
taskTable.remove(taskId);
|
|
450
|
+ if(androidDownloadManagerTaskTable.containsKey(taskId))
|
|
451
|
+ androidDownloadManagerTaskTable.remove(taskId);
|
441
|
452
|
if(uploadProgressReport.containsKey(taskId))
|
442
|
453
|
uploadProgressReport.remove(taskId);
|
443
|
454
|
if(progressReport.containsKey(taskId))
|
|
@@ -635,6 +646,8 @@ public class RNFetchBlobReq extends BroadcastReceiver implements Runnable {
|
635
|
646
|
Context appCtx = RNFetchBlob.RCTContext.getApplicationContext();
|
636
|
647
|
long id = intent.getExtras().getLong(DownloadManager.EXTRA_DOWNLOAD_ID);
|
637
|
648
|
if (id == this.downloadManagerId) {
|
|
649
|
+ releaseTaskResource(); // remove task ID from task map
|
|
650
|
+
|
638
|
651
|
DownloadManager.Query query = new DownloadManager.Query();
|
639
|
652
|
query.setFilterById(downloadManagerId);
|
640
|
653
|
DownloadManager dm = (DownloadManager) appCtx.getSystemService(Context.DOWNLOAD_SERVICE);
|