droidcon Berlin: Bitmaps machen Ärger

Die mobile Denkfabrik  –  0 Kommentare

Wer größere Mengen von Bitmaps auf Low-End-Geräten anzeigen muss, bekommt über kurz oder lang Ärger mit dem Speichermanagement von Android. Facebook leidet – naturgemäß – besonders, da das Unternehmen einen Gutteil seiner User mit Bildmaterial versorgen muss.

Der blaue Riese leidet unter erschwerten Umständen: In Entwicklungsländern haben Telefone oft nur 128 MByte RAM, die Nutzer geben bis zu 10 Prozent ihres monatlichen Einkommens für Datentransfer aus.

Google zeigt sich – wie gewohnt – wankelmütig. Das Unternehmen hat in der Vergangenheit diverse Wege zur Lösung des Problems vorgeschlagen, die aber im Laufe der Zeit wieder abgekündigt wurden. Facebook löst das Problem über eine auf nativen API-Aufrufen basierende Sonderlösung. Diese sperrt ein Bitmap, während es zur Anzeige gelangt – nach getaner Arbeit wird das Bild wieder aus dem Speicher gekickt.

Die Lösung von Facebook nutzt eine native API.
Sie lässt sich über eine Wrapperfunktion ansprechen ...
... die bei der Verwaltung der Bitmaps hilft.
Aber Achtung: Die API-Dokumentation ist alles andere als perfekt.

Auch wenn das hier vorgeschlagene Verfahren mit Sicherheit nicht für jede Applikation gleichermaßen anwendbar ist, ist das zugrunde liegende Konzept attraktiv. Wer seine Bilder in einer Speicherklasse ablegt, kann ihre Inhalte bei Bedarf abtragen und in einem Hintergrund-Thread neu aufbauen.

PS: Die per Java ansprechbaren Bildverarbeitungs-APIs sind alles andere als effizient. Native Bibliotheken können bei Skalierungen und ähnlichen Operationen wesentliche Geschwindigkeitsgewinne bringen ...