Create a class say MyDownloadManager for your downloading code and every time you need to download a new file call a new instance of MyDownloadManager class. Android's default DownloadManager will handle this automatically and start download of multiple files.
private void downloadFile(String url){
MyDownloadManager downloadManager = new MyDownloadManager();
downloadManager.DownloadFile(getApplicationContext(), url);
}
Your MyDownloadManager class will be like this:
public class MyDownloadManager{
private Context mContext;
private String url;
public void Download(Context context, String url){
mContext = context;
this.url = url;
String serviceString = Context.DOWNLOAD_SERVICE;
DownloadManager downloadManager;
downloadManager = (DownloadManager)mContext.getSystemService(serviceString);
DownloadManager.Request request = new DownloadManager.Request(uri);
long reference = downloadManager.enqueue(request);
}
public void RegisterDownloadManagerReciever(Context context) {
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (DownloadManager.ACTION_DOWNLOAD_COMPLETE.equals(action)) {
// Do something on download complete
}
}
};
context.registerReceiver(receiver, new IntentFilter(
DownloadManager.ACTION_DOWNLOAD_COMPLETE));
}
}