2015-06-11 2 views
0

Примечание: это общий вопрос о персоне, новой для механизмов кэширования на Android.Как использовать типы кеша RoboSpice

Почему RS использует кеширование LRU в FlickrSpiceService образец?

Существует LruCacheBitmapObjectPersister:

@Override 
public CacheManager createCacheManager(Application application) throws CacheCreationException { 
    CacheManager manager = new CacheManager(); 
    InFileBitmapObjectPersister filePersister = new InFileBitmapObjectPersister(getApplication()); 
    LruCacheBitmapObjectPersister memoryPersister = new LruCacheBitmapObjectPersister(filePersister, 1024 * 1024); 
    manager.addPersister(memoryPersister); 
    return manager; 
} 

Почему не удалить его и просто использовать InFileBitmapObjectPersister так:

@Override 
public CacheManager createCacheManager(Application application) throws CacheCreationException { 
    CacheManager manager = new CacheManager(); 
    InFileBitmapObjectPersister filePersister = new InFileBitmapObjectPersister(getApplication()); 
    manager.addPersister(filePersister); 
    return manager; 
} 

ответ

0

кэш-памяти (LruCacheBitmapObjectPersister в данном случае) гораздо быстрее, чем файл система одна (InFileBitmapObjectPersister), но в то же время она меньше.

Поэтому, используя меньший (но более быстрый) кеш памяти, как уровень 1 и более крупный (но медленный) кеш файловой системы, поскольку уровень 2 обеспечивает улучшенную производительность для общего использования. Вы можете проверить this broadly related answer for processor cache для получения дополнительной информации. Многоуровневый кеш - это повторяющаяся тема в области компьютерных наук.