Ich versuche das Symbol eines Markers in Google Maps v2 zu setzen. Ich lade einige Bilder über das Netzwerk herunter und ändere deren Hintergrund im Code. Danach setze ich sie als Icons auf Marker. Bei der ersten Erstellung der Map funktioniert es gut, aber nach der Rotation gibt es eine Ausnahme.
Android Version Ich laufe das auf: 4.3
Mein Code ist wie folgt:
%Vor% und VenuesHelper.iconizeBitmap()
lautet wie folgt:
Stack-Ablaufverfolgung ist wie folgt:
%Vor%Die Lösung gefunden. Ich habe geprüft, ob sich die Bitmap im Cache befindet, bevor ich sie neu lade, aber ich habe vergessen, nach dem Cache-Treffer zu suchen. Jetzt habe ich den Code geändert und es stürzt nicht mehr ab. Ich konnte den genauen Grund des Absturzes nicht herausfinden, wahrscheinlich ein paar dumme Müllsammelprobleme.
Hier ist der modifizierte Code, der nicht mehr abstürzt:
%Vor%Ich hatte ein ähnliches Problem, als ich versuchte, einen Marker neu zu laden, der "myMarker.setIcon ()" ausführte, und nach einigen Aktualisierungen lief die App in einer "java.lang.IllegalArgumentException: Released unknown bitmap reference".
Ich entdeckte, dass das Aufrufen von "myMap.clear ()" zum Säubern aller Markierungen das Problem war. Tatsächlich können Sie in der Funktionsdokumentation Folgendes lesen: "Entfernt alle Markierungen, Polylinien, Polygone, Überlagerungen usw. von der Karte.".
Nun, dieses "etc" scheint mehr zu machen, als ich erwartet habe ...
Um das zu lösen, habe ich eine benutzerdefinierte Funktion verwendet, um alle meine in einer HashMap gespeicherten Markierungen zu durchlaufen und einzeln zu entfernen, und das ist alles, keine weiteren Ausnahmen wie die in meinem Code.
Sie können alle Markierungen durchlaufen, um sie wie folgt zu entfernen:
%Vor%Tags und Links android bitmap google-maps-markers google-maps-android-api-2