2014-05-20 2 views
1

안녕하세요 저는 좋은 라이브러리 Picasso을 사용하여 캐싱과 같은 작업을 수행 할 수 있도록 URL에서 비트 맵을 가져와야하는 Android 앱을 개발 중입니다. . 여기 안드로이드에서 피카소를 사용하여 비트 맵의 ​​캐시를 유지하는 방법

target = new Target() { 
    @Override 
    public void onPrepareLoad(Drawable drawable) {} 

    @Override 
    public void onBitmapLoaded(Bitmap bitmap, LoadedFrom arg1) { 
     if(bitmap != null) { 
      mProgressBar.setVisibility(View.GONE); 
      qrCodeImageView.setVisibility(View.VISIBLE); 
      qrCodeImageView.setImageBitmap(bitmap); 
     } 
    } 

    @Override 
    public void onBitmapFailed(Drawable drawable) {} 
}; 

Picasso.with(this).load(URL).into(target); 

그 다음 다음 시간 전에이 올바르지 만 캐시에서 선택하여 응용 프로그램을 닫습니다 URL 처음부터 비트 맵을 다운로드이 코드 내 샘플 코드 나에서 응용 프로그램을 닫을 때 " 최근에 열린 응용 프로그램 "을 선택하면 URL에서 비트 맵 다운로드가 다시 시작됩니다.

하지만 여기서는 항상 비트 맵을 다운로드 한 후 캐시에서 선택해야합니다. Android에서 Picasso을 사용하여이 작업을 수행 하시겠습니까?

미리 감사드립니다.

+0

캐시에서 App Exit를 지우는 것이 더 나은 방법이라고 생각합니다. 당신이 좋은 사용자 경험을 할 수있는 이런 식으로 화면을 보여주고있는 활동을 마치면 청소해야합니다 (피카소 덕분에 그는이 물건을 다루고 있습니다). https://github.com/square/picasso에서 문제를 작성하면보다 나은 답변을 얻을 수 있습니다. –

답변

0

Picasso는 초기화 될 때 호출 될 캐시를 초기화하기 위해 빌더를 사용합니다. 캐시가 있으면 대상이 캐시에서 자동으로 가져옵니다. 그러나 자신의 캐시 메커니즘을 관리하려면 Activity/Application을 통해 인스턴스를 만들고 액세스해야합니다. 귀하의 응용 프로그램/활동 클래스 피카소가 Source at GitHub을 확인 초기화 방법에 대한 참고로

/** Other Initialization **/ 
private LruCache mCache; 
private Picasso mPicasso; 

private void setupImageManager() { 
    Picasso.Builder builder = new Picasso.Builder(this); 
    mCache = new LruCache(this); 
    builder.memoryCache(mCache); 
    mPicasso = builder.build(); 
} 

public Picasso getPicasso() { 
    return mPicasso; 
} 

에서

.

+0

답변에서 공유 한 코드는 내가보고있는 내 문제를 해결할 것입니까? –

+0

예, okhttp lib를 사용 중이면 디스크에 캐시하고 디스크에서 다시로드합니다. 다른 http lib를 사용하는 경우 수동으로 캐시를 설정하고 다운로더를 사용하여 캐시를 유지해야합니다. kitkat/Android 4.4 okhttp가 프레임 워크 자체에 오면 걱정할 필요가 없습니다. –

+0

위의 코드는 앱 "최근 탭"을 닫더라도 캐시를 유지합니다. –

관련 문제