Die Anforderung besteht darin, maximal 40 Bilder auf den Server zu laden, derzeit kann ich alle 40 Bilder (mit einigen für das Bild spezifischen Daten) auf den Server hochladen. Jetzt muss ich alle 40 Bilder parallel hochladen (vorher nacheinander gemacht).Parallel Uploads mit Asynctask mittels Retrofit 2
for(int i=0;i<imageList.size();i++){
MyAsync async = new MyAsync(imageList.get(i));
async.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
Der obige Code ist die Demo für das, was ich in meinem Projekt habe. ImageList ist die Liste der Bilder, die ich an die AsyncTask übergebe, um das Image hochzuladen.
Jetzt zu einem Zeitpunkt gibt es 9 parallel doInBackground() heißt (log hinzugefügt, um zu sehen).
Wenn der Upload in der doInBackground() - Methode gestartet wird, verwende ich call.execute() zum Hochladen auf Current Thread anstelle von call.enqueue().
Das Problem ist, wenn 40 Bilder hochgeladen werden sollen, dann nur 5 bis 6 Bilder hochgeladen werden, lade ich das Originalbild mit Multipart hoch, also gibt es keinen Fehler beim Hochladen, das sequentielle Hochladen funktioniert einwandfrei.
Das einzige Problem ist, wenn Sie versuchen, parallel zu laden.
Kann mir bitte jemand einen Vorschlag machen, um diese Art von Problem zu lösen ???
Jede Hilfe wird geschätzt.
Vielen Dank im Voraus.
Der Zweck der parallelen Uploads hier ist es, die Zeit des Hochladens zu reduzieren. Es dauert mehr als 10 Minuten, um 40 Bilder von 4-5 mb Bildern hochzuladen. –