[Gelöst] Bild aus SoftReference-Cache laden nach Drehen des Handys

  • Hallo,


    ich habe mal eine Frage zum Cachen von Bildern, per Forumssuche habe ich nichts passendes gefunden.


    Ich habe eine App, die kleine und größere Bilder aus dem Internet herunterlädt und anzeigt. Das klappt auch alles wunderbar. Nun versuche ich mit (als global in der Hauptklasse definiert)

    Java
    HashMap<String,SoftReference<Bitmap>> imagecache = new HashMap<String,SoftReference<Bitmap>>();
    SoftReference<Bitmap> softreference;
    Bitmap bitmap;


    die kleinen Bilder zu cachen.


    Damit kommen die Bilder in den Cache:

    Java
    @Override
    public void onSaveInstanceState(Bundle savedInstanceState) {
       savedInstanceState.putIntArray("startids", startids);
       bitmap = starttip1_view.getDrawingCache();
       imagecache.put("starttip1", new SoftReference<Bitmap>(bitmap));
       super.onSaveInstanceState(savedInstanceState);
    }


    Vorher wird natürlich in der onCreate-Methode folgendes ausgeführt:

    Java
    starttip1_view.setDrawingCacheEnabled(true);


    In


    wird die entsprechende Größe ermittelt und dann werden die Bilder wie folgt geladen (eigene externe Klasse):


    Hier ist die Methode LoadStartImages(breite, hoehe):


    Aber irgendwie funktioniert das nicht, der Cache ist nach dem Drehen des Handys immer leer. Funktioniert das nur, wenn man das Handy nicht dreht, oder mache ich was falsch?
    Ich würde mich über einen Tip oder Hilfe sehr freuen.

  • Hallo,


    ich habe jetzt mal etwas logisch nachgedacht und bin etwas weitergekommen.
    Es werden jetzt Bilder aus der HashMap geladen, hier die genauere Erklärung des Zustandes:


    Ich habe eine Haupt-Activity mit mehreren Bildern, an die ein OnClickListener angehängt wurde. Bei einem Klick auf ein Bild wird eine Unter-Activity gestartet. Wenn ich von da per Zurück-Taste zurück gehe, werden die Bilder aus der HashMap geladen. Das ist aber voll sinnlos, da Android das in diesem Fall schon von alleine macht. Testweise habe ich den Bilder-Cache auskommentiert und die Bilder werden trotzdem sofort angezeigt, ohne neu aus dem Internet geladen werden zu müssen.


    Ich würde den Bilder-Cache aber gerne beim Drehen des Handys nutzen, aber da ist die HashMap immer leer.
    Geht das nicht anders oder mache ich noch was falsch? Denn die Daten, die in "onSaveInstanceState(Bundle savedInstanceState)" gespeichert werden, bleiben doch auch bei einer Drehung des Handys vorhanden.

  • Hallo,


    bei einer neuen Unteractivity mit einer ListView konnte ich die HashMap jetzt sinvoll einsetzen. Bei der Hauptactivity werde ich nichts mehr ändern, da werden halt die Bilder jedesmal geladen. Auf die SD-Card werde ich die nicht speichern, da jede weitere Berechtigung die Nutzeranzahl senkt.


    Deshalb markiere ich den Thread als gelöst.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!