OkHttp: Warnung wegen ausgelaufener Verbindung vermeiden

8

Ich benutze OKHttp 3, und ich bekomme immer wieder Verbindungswarnungen:

%Vor%

Jedes Mal, wenn ich ein ResponseBody bekomme, rufe ich entweder .string() , was den Stream für mich schließen soll, oder ich schließe es explizit in einem finally -Block wie folgt ab:

%Vor%

Meine Anwendung nutzt das Netzwerk intensiv, und dennoch erscheint diese Warnung häufig. Ich habe nie ein Problem durch dieses vermeintliche Leck beobachtet, aber ich würde gerne verstehen, wenn und was ich falsch mache.

Könnte jemand etwas Licht auf dieses Thema werfen?

    
Alphaaa 14.07.2016, 17:16
quelle

3 Antworten

1

Durch das Upgrade auf OkHttp 3.7 hat Eclipse mich vor möglichen Ressourcenlecks gewarnt. Ich fand mein Problem in dieser Methode, die ich schrieb:

%Vor%

Ich nahm an, dass der Stream automatisch mit dem Aufruf von getResponse(url, client).body().string() automatisch geschlossen würde. Aber immer wenn eine Antwort fehlgeschlagen ist, würde eine Ausnahme vor der Ausführung von .string() auftreten, daher bleibt der Stream geöffnet.

Das Hinzufügen eines expliziten Abschlusses im Falle einer nicht erfolgreichen Antwort hat das Problem gelöst.

%Vor%     
Alphaaa 05.05.2017, 15:06
quelle
1

Wie in den anderen Antworten erwähnt, müssen Sie die Antwort schließen. Ein etwas saubererer Ansatz bestünde darin, das ResponseBody im try-Block zu deklarieren, so dass es automatisch geschlossen wird.

%Vor%     
Corrigan Johnson 15.12.2016 16:19
quelle
-1

Sie müssen den Körper schließen () versuchen Sie unter dem Code

%Vor%     
Chayon Ahmed 27.07.2016 11:42
quelle

Tags und Links