• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Probleme mit API und PQ-Import

Ging-Buh

Geowizard
mpw96 schrieb:
Code:
BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()), 1);
result = rd.readLine();
Bei diesem rd.readLine() tritt teilweise schon das Problem auf.

Wie gesagt, ich werde versuchen, diesen readLine() (der ja den gesamten Stream auf einmal liest) durch kleine Blöcke zu ersetzen...

Also, Du stellst Dir einen BufferedReader hin mit Puffergröße 1 Byte?? Im Zweifelsfall kommen außerdem Binärdaten, da kann verdammt viel kommen, bis zufällig mal eine Bytefolge dabei ist, die ein Newline darstellt.
Ja, du hast recht. Ich habe da mit verschiedenen Werten getestet, bei mir aber keinerlei Änderungen festgestellt.
Bei diesem Aufruf kommen definitiv keinerlei Binärdaten und auch kein NewLine. Das gesamte Ergebnis kommt als Text in einer Zeile zurück.

mpw96 schrieb:
Also könnte man das nicht in erster Näherung so machen:
Code:
BufferedInputStream in = new BufferedInputStream(response.getEntity().getContent());
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(toFileName));
byte[] buff = new byte[32 * 1024];
int len;
while ((len = in.read(buff)) > 0)
{
    out.write(buff, 0, len);
}
in.close();
out.close();

So bestimmst DU (und nicht die Daten die kommen), wie groß der Puffer ist.
mpw96
Ja, das wird wohl der Weg sein, den wir gehen müssen. Ich wollte es erst so versuchen da in der ursprünglichen Version, nach dem Lesen des gesamten Strings für die Decodierung noch viel viel mehr Speicher verbraucht wurde, ca. 2-3x so viel. Dies habe ich in den ersten Änderungen rausgenommen, so dass die Daten zumindest nur 1x komplett im Speicher sind.
Und ganz so einfach ist es aber nicht, da wir hier in dem String ein JSON Object bekommen, aus dem wir erst die Statusmeldungen auswerten müssen und außerdem die Daten der PQ darin Base64 kodiert sind. Diese sollten in diesem Zug auch gleich decodiert werden.
 

Ging-Buh

Geowizard
So, nächster Versuch. Wenn das jetzt nicht hilft dann weiß ich es auch nicht mehr.
In der DropBox liegt die neue Rev. 1292.

Die Daten werden jetzt in Stücken zu je 32kB heruntergeladen und gleich on the fly Encodiert und als ZIP gespeichert. Die gesamten Daten der PQ sind jetzt zu keiner Zeit im RAM.

Falls immer noch Probleme auftreten sollten werden auch in dieser Version noch Log-Ausgaben in die debug.txt geschrieben.
 

Koblenzer

Geomaster
Ein kurzer Versuch mit 1292 und einer 3,34 MB PQ verlief soeben erfolgreich. Vorher war das ja nicht mal mit halb so großen PQs möglich. Werde es später noch näher testen und dann auch auf meinem 2. Gerät.
Freier Speicher ist übrigens während ACB läuft bei ca. 150 MB RAM sagt mir die App "Usage Timelines Free".
 

Psycho906

Geocacher
Super, es hat geklappt! Alle PQs wurden importiert. Ich danke euch vielmals.
Eine debug.txt gibt es allerdings trotzdem. Wird die immer geschrieben, oder soll ich die mal hochladen?
 

Ging-Buh

Geowizard
Psycho906 schrieb:
Super, es hat geklappt! Alle PQs wurden importiert. Ich danke euch vielmals.
Eine debug.txt gibt es allerdings trotzdem. Wird die immer geschrieben, oder soll ich die mal hochladen?
Danke für die positive Nachricht. Da bin ich echt erleichtert. Mehr wäre mir jetzt auch nicht mehr eingefallen.
Die debug.txt brauchat du nicht hochladen. Die wäre nur für den Fall gewesen falls es immer noch nicht gehen würde.

Grüße aus Bayern
Hubert
 

Koblenzer

Geomaster
Der ausführliche Test auf meinem 2. Note war ebenfalls erfolgreich. Von kleinen PQs mit 0,01 MB bis großen mit 1000 Caches wurde alles fehlerfrei importiert. Die Dauer war auch in Ordnung, mir kam es nicht länger vor als vorher mit der alten Variante und den damit größten funktionierenden PQs.
Aus meiner Sicht ist das Problem gelöst, vielen herzlichen Dank dafür!
:gott:
 

mpw96

Geocacher
Hallo,
ich sehe jetzt auch erstmals eine Liste mit der 1292. Wunderbar. Danke für die schnelle Hilfe.

Was ich nicht kapiere: Im angehängen Screenshot sieht man, daß cih zwei herunterladbare Queries habe. Eine selbstzusammengestellte, und die "My Finds Pocket Query". In der Cachebox sehe ich nur die selbstzusammengestellt. Bei meinen Tests gestern hatte ich nur die "My Finds...". Vielleicht war auch das ein Grund, warum ich immer eine leere Liste hatte. Wie gut, daß wir noch andere Fehler gefunden haben...

Kann das sein, daß diese PQ nicht in der Liste der downloadbaren Queries auftaucht? Wie holt Ihr Euch die Liste? Man beachte auch, daß vor der "My Finds..." kein Haken ist, um sie zu löschen. Oder ist das ein Feature, daß diese Liste nicht kommt?

mpw96PQ_at_GC.png
 

droogi

Geocacher
Die eigenen Funde (My Finds) lassen sich nicht als Pocket Query per API herunterladen.
Um sie in ACB zu bekommen muss man sie als zip datei laden und in der Ordner PocketQueries ins Cachebox Verzeichnis kopieren.
Startet man nun Cachebox, kann man bei den Importoptionen "GPX" auswählen, dann werden die Dateien im PocketQuery Ordner importiert.
 
Oben