15 Stimmen

iPhone-App gerät in einen Zustand, in dem Netzwerkanfragen nie abgeschlossen werden

Es kommt immer wieder vor, dass meine iPhone-App in einen Zustand gerät, in dem Netzwerkanfragen immer wieder abbrechen, auch wenn andere Apps problemlos funktionieren (und sogar auf dieselben Websites zugreifen können). Dies ist nicht offensichtlich mit Änderungen in der Netzwerkverfügbarkeit korreliert, und geschieht sowohl auf 3G und über WiFi. Haben Sie Vorschläge, wie man das Problem diagnostizieren kann?

(FWIW, die App verwendet MonoTouch und HttpWebRequest, aber ich vermute, was auch immer falsch ist, ist auf niedrigerer Ebene).

Anmerkung: Das Problem bleibt auch dann bestehen, wenn die Anwendung in den Hintergrund gestellt und die Netzwerkkonfiguration geändert wird; die einzige Lösung scheint darin zu bestehen, die Anwendung zu beenden und neu zu starten.

Aktualisierungen: Ich habe versucht, den Einsatz von Reachability aber ohne Erfolg. Reachability.InternetConnectionStatus gibt immer zurück ReachableViaWiFiNetwork (ou ReachableViaCarrierDataNetwork abhängig; ebenso IsHostReachable() gibt immer true zurück. Runtime.StartWWAN() scheint keinen Unterschied zu machen.

6voto

jstedfast Punkte 31645

Es gab einen offenen Fehler zu diesem Thema unter https://bugzilla.novell.com/show_bug.cgi?id=555439 und es gab mehrere Versuche, sie zu lösen. Mit dem letzten Kommentar im Bug wurde es vermutlich behoben, aber ich vermute, wenn Sie MonoTouch 4.0.3 verwenden, gibt es einige Fälle, die nicht umgangen werden.

Im Grunde genommen spiegelt sich das Problem in dieser anderen Stackoverflow-Frage wider: iPhone 3G-Verbindungsfreigabe

MonoTouch versucht, dieses Problem zu umgehen, indem es MonoTouch.Runtime.StartWWAN(Uri) aufruft, das eine Dummy-Verbindung zur Uri mit einer NSUrlConnection öffnet, um die Netzwerkschnittstelle aufzuwecken. Dann geht MonoTouch zurück zur Verwendung der BSD-Socket-API innerhalb der HttpWebRequest.

0voto

bibo bode Punkte 1140

Versuchen Sie die Einstellung timeOutInterval Eigenschaft der NSURLRequest für den Anruf verwendet.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X