# Große Dateien aus Soap-Objekt



## domjos1994 (9. Dez 2015)

Hallo zusammen,

ich habe ein Problem:
Und zwar bin ich gerade dabei eine App zu schreiben, welche aus einer SOAP-Schnittstelle PDF-Dateien auf das Smartphone überträgt. Als Library benutze ich momentan
"KSOAP2-Android", diese funktioniert auch so weit ganz gut.
Leider kommt es bei größeren Dateien oftmals zu "SystemOutOfMemoryError", da die PDF Dateien als String zurück geliefert werden.
Ich bin leider noch nicht dahinter gekommen, ob man die Antwort auch irgendwie als Stream auslesen kann.

Daher meine Frage:
Habt ihr eine Lösung für mein Problem?
Oder muss man das vielleicht bei Android einfach hinnehmen?

Danke schon mal im voraus für eure Antworten.

Sorry, ich glaube ich habe diesen Eintrag in die Falsche Kategorie gepostet xD

LG Dominic


----------



## Thallius (9. Dez 2015)

Von welchen Größenordnungne sprechen wir denn hier?


----------



## buggy84 (9. Dez 2015)

Heißt das Du überträgst den Inhalt der pdf als Stream?
Wäre es nicht eventuell einfacher, die pdf zu laden, anzuzeigen und dann zu entsorgen? Da wäre der Rechenaufwand geringer und die Übertragungsgeschwindigkeit deutlich höher. Oder hab ich was falsch verstanden?


----------



## domjos1994 (9. Dez 2015)

Hallo,

@Thallius Es geht hier um PDF-Dateien, welche über 10MB haben.

@buggy84 
Also ich bekomme eine Antwort von der SOAP Schnittstelle, 
in der eine Property hinterlegt ist, welche eine Datei als String-Zeichenkette enthält.
Ich speichere die Datei als PDF-Datei auf dem Smartphone und anschließend kann man diese angucken.
Leider kommt es schon beim "HTTPTransport.call" zum Fehler.

LG Dominic


----------



## Thallius (9. Dez 2015)

Wieso sollten 10MB einen Out Of Memory erzeugen. Ich denke da liegt Dein Problem ganz wo anders....


----------



## domjos1994 (9. Dez 2015)

Naja so ein Android-Smartphone hat eine bestimmte Heap-Size, die zwischen den Smartphones variert.
Es gibt Heap-Sizes von 16 - ... MB: http://stackoverflow.com/questions/...e-on-different-phones-devices-and-os-versions

Aber da die APP halt schon Aktionen vorher ausführt, wird es dann ziehmlich knapp mit dem verfügbaren Speicher.


----------



## Thallius (9. Dez 2015)

Also bei meinem 6 Jahre alten iPhone konnte man schon bis zu 80MB benutzen bevor man die ersten Warnings von System bekam, dass man mal was freigeben soll. Das wäre dann aber echt ein Armutszeugnis für Android wenn die bei 16MB dicht machen...


----------



## domjos1994 (9. Dez 2015)

Ja, bei meinem LG Optimus 4x HD geht die App einwandfrei. 
Aber bei den Emulatoren versagt sie teilweise mit dem oben genannten Fehler.


----------



## buggy84 (9. Dez 2015)

btw && Offtopic:
Android an sich ist ein Armutszeugnis.

Ontopic: Der Fehler ist bekannt, bzw ist gar kein Fehler sondern offenbar wirklich auf den geringen Heap zurückzuführen. Ich hatte mal ein ähnliches Problem mit vollem Heap. Ist eine andere Geschichte, hat mich aber mehrere Tage gekostet, bis es gelöst war.

Hier ist übrigens etwas von offizieller Seite:
https://code.google.com/p/ksoap2-android/issues/detail?id=137

Eine große Datenmenge als Response bringt Deine App aus der Ruhe , wobei "große Datenmenge" nichtmal richtig definiert ist.


----------



## Thallius (9. Dez 2015)

Dann mach es doch eben von Hand. Setzte eine eigenen HTTP Request ab. Dann bekommst du die daten doch als Stream und kannst sie problemlos als datei speichern.


----------



## domjos1994 (9. Dez 2015)

@buggy84 
Auf diese Seite bin ich auch schon gestoßen, aber ich habe gehofft, dass irgendjemand vielleicht eine andere Library kenn, welche das auf eine andere Weise erledigt. Danke für deine Bemühungen.

@Thallius 
Das ist eine gar nicht so doofe Idee xD
Danke


----------

