2014-01-16 1 views
2

LruCacheObjectPersister.java을 보자.이 메모리는 Android LRUCache를 기반으로 메모리 내재 된 객체입니다. 문자열이나 메모리의 비트 맵 옆에 pojos 클래스를 캐시하도록이 기본 클래스를 확장하려고합니다.메모리 차이 객체 유형의 RoboSpice 캐시

:

class Request1 extends SpiceRequest<Book>{} 
    class Request2 extends SpiceRequest<Category>{} 

    getSpiceManager().execute(new Request1(), CACHE_KEY, 5 * DurationInMillis.ONE_MINUTE, new RequestListener<Book>(){}); 

    getSpiceManager().execute(new Request2(), CACHE_KEY, 5 * DurationInMillis.ONE_MINUTE, new RequestListener<Category>(){}); 

내 문제는이 같은 향신료 서비스에서 이러한 유형을 지원해야 캐시 관리자에게 신고하는 방법입니다 : 내 목표는 다음과 같이 메모리에 요청의 많은 종류를 실행하고 캐시에 결과를 얻을 수있다

@Override 
public CacheManager createCacheManager(Application application) { 
    CacheManager cacheManager = new CacheManager(); 

    // I want to store any types instead of bitmap 
    LruCacheBitmapObjectPersister lruCacheBitmapObjectPersister = new LruCacheBitmapObjectPersister(inFileBitmapObjectPersister, 1024*1024); 
    cacheManager.addPersister(inFileBitmapObjectPersister); 

    return cacheManager; 
} 

어떻게하면됩니까?

답변

1

사용자 지정 LruCacheXXXXObjectPersister를 만들고 사용자 지정 서비스에 등록해야합니다. 비트 맵으로 일하는 방법을 따르고 자신의 POJO에 대해 동일한 메커니즘을 유지하십시오.

+2

그래서 각 pojo에 대해 100 개의 다른 요청을하면 100 개의 Persister를 만들어야합니까? 내가 원한 것은 모두를 위해 일하는 올인원 퍼시 스터이다. – R4j

+0

JSON을 디스크 캐시 (예 : JSON 네트워크 형식을 사용하면 매우 쉽습니다)로 사용하여 기본 잔고는 얻을 수 있지만 디스크에는 JSON을 사용합니다. 그러나 Pojo를 Lru에서 유지하기가 더 어렵다면 일반적인 것을 얻을 수 있지만 RAM의 각 항목의 크기를 계산할 수있는 규칙을 정의해야합니다. 그리고 저는이 시점이 어렵다고 정말로 믿습니다. – Snicolas

+0

디스크 기반 캐싱이 충분히 효율적이지 않습니까? 그런 경우는 없었습니다. – Snicolas