Używam programu Universal Image Loader do wyświetlania obrazów w mojej aplikacji w widokach listy. Używam UnlimitedDiscCache
, ponieważ jest to najszybszy mechanizm pamięci podręcznej, zgodnie z dokumentacją.Uniwersalny program ładujący obrazy - ręczne czyszczenie pamięci podręcznej
Chciałbym jednak wyczyścić pamięć podręczną dysku, gdy moja aplikacja jest zamknięta (np. W onStop()
), ale należy usunąć tylko najstarsze pliki z pamięci podręcznej, które przekraczają określony limit (jak robi to TotalSizeLimitedDiscCache
).
Jestem świadomy ImageLoader.clearDiscCache()
ale w moim przypadku to kasuje całą pamięć podręczną, ponieważ używam UnlimitedDiscCache
przed ...
Więc chciałbym mieć najszybszy mechanizm pamięci podręcznej, gdy użytkownik jest ładowanie i przewijanie listviews i wyczyść wolną pamięć podręczną, gdy użytkownik nie będzie już wchodził w interakcję z aplikacją.
Jakieś pomysły, w jaki sposób mogę to osiągnąć?
Nie można zagwarantować, że aplikacja zatrzyma się po wywołaniu funkcji 'onStop()'. To mówi tylko, że obecna aktywność jest zatrzymywana. Spadek wydajności jest bardzo minimalny w porównaniu z czasem spędzonym na implementacji innego mechanizmu buforowania (co i tak może spowolnić aplikację). –
@jeff_bordon Czy masz jakiś kod, który jest używany do zbudowania instancji ImageLoader? @Androidy Tak, możesz rozróżnić, kiedy aplikacja się kończy, np. 'If (isFinishing()) {coś}} –
@jeff_bordon możesz mieć BoB (najlepszy z nich). Zobacz źródło tutaj: https://github.com/nostra13/Android-Universal-Image-Loader/blob/master/library/src/com/nostra13/universalimageloader/cache/disc/impl/LimitedAgeDiscCache.java Pisanie UnlimitedAgeDiskCache będzie być całkiem proste. Wszystko, co musisz wiedzieć, to data i różnica między teraz. Myślę, że to nie zmniejszy prędkości ListViews, jeśli jest to kwestia kilku ifs. –