Rafael K.
Der ViewPager hat eine Methode namens "setOffscreenPageLimit" ... setze den Wert doch mal auf genau die Anzahl der Seiten in deinem ViewPager, oder mehr. Sonst kann es sein, dass er bei jedem Swipe die Views neu aufbaut.
Der default-Wert ist auf 2 Seiten eingestellt, die gecached werden.
Bsp für 3 Seiten:
App-Start, es wird S1 angezeigt, also wird S2 mitgeladen. Auf S2 wechseln S1 bleibt im Cache und S3 wird dazu geladen. Auf S3 wechseln S1 verschwindet aus dem Cache, nur S2 und S3 bleiben.
Den Wert anzupassen macht eigentlich fast nie Sinn (außer man hat eine App, die viele Pages besitzt und der Nutzer diese ungewöhnlich schnell "durch-zappt").
Btw: gerendert werden die Bilder sowieso erst nach dem Wischen (in onDraw).. der Cache hat damit nichts zu tun - bezogen jetzt aufs Rendern...
Zurück zur Frage:
Pascal hat ja bereits gesagt, dass du die Größe der Bilder reduzieren sollst, das ist für die Performance immer sinnvoll, daher solltest du das nochmal probieren.
Eine andere Idee ist im Manifest den Eintrag useLargeHeap auf true zu setzen. Damit ermöglichst du (je nach Gerät) das Zwischenspeichern von größeren Datenmengen. Ob das Ganze sinnvoll ist, oder einfach nur ein Mittel um schlechten Code gangbar zu bekommen, kommt auf deine App bzw. deinen Code an (es ist also nicht immer nötig bzw. zielführend).
Aus den off. Docs:
Whether your application's processes should be created with a large
Dalvik heap. This applies to all processes created for the
application. It only applies to the first application loaded into a
process; if you're using a shared user ID to allow multiple
applications to use a process, they all must use this option
consistently or they will have unpredictable results. Most apps should
not need this and should instead focus on reducing their overall
memory usage for improved performance. Enabling this also does not
guarantee a fixed increase in available memory, because some devices
are constrained by their total available memory.
To query the available memory size at runtime, use the methods
getMemoryClass() or getLargeMemoryClass().
— geändert am 01.06.2016, 17:25:17
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.