2016-09-08 3 views
0

Am Abend, ich teste gerade einige JSON-Code für mein Android-Projekt, und ich frage mich, ob mehrere offene httpurlconnections, die alle ausgeführt werden, sicher ist?Java mehrere HttpURLConnections über Iteration?

Die API, für die ich Daten anfordere, hat einen einfachen Endpunkt, der auch ein json-Element für die nächste Datenseite enthält. dh. ... api/songs/ist die erste Seite; Innerhalb dieser ersten Seite gibt es ein Element für eine URL-Zeichenfolge zu einer anderen Seite von Daten: .../api/songs /? page = 2 und so weiter, bis es ein Null-Element ist.

Angenommen, ich habe diese try-catch-finally-Funktion, die eine Verbindung herstellt, Fehler abfängt und sie am Ende schließt. Innerhalb des try-Blocks erinnere ich mich an die gleiche Funktion, solange es ein nächstes Element im geparsten json gibt; Jeder Aufruf öffnet eine neue URLConnection, die für eine einzelne Anforderung pro Verbindung ausgelegt ist, wenn ich mich nicht irre.

Wenn ich den Punkt erreiche, an dem das nächste Objektelement null ist, würde ich etwa 14 HttpURLConnections öffnen und schließen, sobald es zum ursprünglichen Aufruf zurückkehrt. Ist das sicher? Es scheint zu funktionieren, da ich bereits Code ohne Absturz geschrieben habe.

try { 
    //Open HTTLURLConnection with given uri argument 
    //read and store the results within a StringBuffer 
    //if StringBuffer(when parsed to a json element) has a next element, 
    //call this try block again 
catch(IO/JSON exceptions...) {} 
finally{ 
//close URIConnection if not null 
} 

dass über pseudo code sollte kein Problem sein, glaube ich.

+1

Es gibt kein Problem mit dem Öffnen mehrerer URLConnections. Gehen Sie nicht davon aus, dass sie in Ordnung sind. –

+0

Wenn Sie es richtig codiert haben, sollte alles funktionieren, es gibt kein Problem mit mehreren URLConnections, nur sicherstellen, dass Sie sie in jedem Fall richtig schließen, denn sonst könnte es zu Speicher-/Ressourcenlecks kommen. –

Antwort

1

Wenn Sie es richtig codiert haben, sollte alles funktionieren, es gibt kein Problem mit mehreren URLConnections, nur sicherstellen, dass Sie sie auf jeden Fall schließen, denn in anderen Fällen könnte es zu Speicher/Ressourcen-Leck

führen
+0

Nun, da jede Verbindung trennen und auf einem endgültigen Block enden sollte, glaube ich, dass dies in Ordnung sein sollte. Ich werfe eine Bearbeitung in meine ursprüngliche Frage sowie beim Ausdruck der Ergebnisse über Protokollanweisungen, es scheint in der Reihenfolge zu laufen, die ich erwarte. Mehr oder weniger, das könnte auch die akzeptierte Antwort für mich sein. Vielen Dank. – kthieu