2017-10-20 1 views
2

Android 프로젝트에서 MvvmCross를 사용하고 있습니다. 각 항목 (URL에서 다운로드 한 이미지)을 포함하는 MvxRecyclerView을 가지고 있으며 항목 수가 수백 개이므로 내 앱이 이미지/메모리를 관리하는 데 도움이되는 DownloadCache 플러그인을 사용하여 앱이 충돌하지 않도록하고 싶습니다. OutOfMemory 예외입니다.DownloadCache 플러그인을 사용하는 방법은 무엇입니까?

이상적으로 이미지/메모리 제한에 도달하면 가장 먼저 다운로드 한 이미지 (MvxRecyclerView에서 가장 멀리 보이지 않는 항목)는 이미지가있는 다음 보이는 항목을위한 공간을 확보하기 위해 해제해야합니다.

나는 여기에 대한 소스를 발견 https://github.com/MvvmCross/MvvmCross/tree/develop/MvvmCross-Plugins/DownloadCache

가 어떻게 이것을 달성하기 위해이 플러그인을 사용할 수 있습니까?

편집

몇 일을 시도 후, 나는 내가 전화 할 때 얻을이 오류 이상 붙어 Mvx.Resolve<IMvxImageCache<byte[]>>().RequestImage(myImageUrl)

는 MvvmCross.Plugins.DownloadCache.IMvxLocalFileImageLoader

유형 를 해결하는 데 실패

이렇게 유형을 등록하면 해결할 수없는 이유를 알 수 없습니다 :

Mvx.ConstructAndRegisterSingleton<IMvxLocalFileImageLoader<Bitmap>, MvxAndroidLocalFileImageLoader>(); 

나는이 같은 IMvxImageCache를 등록 해요 :

Mvx.RegisterSingleton(typeof(IMvxImageCache<byte[]>),() => 
{ 
    return new MvxImageCache<byte[]>(Mvx.Resolve<IMvxFileDownloadCache>(), 2, 5000000, true); 
}); 

내가 뭔가를 잘못하고 있어요 같은 느낌 ...

답변

1

문서가 here 사용할 수 있습니다. 설명서에 다음과 같이 표시됩니다.

  1. ImageView 대신 MvxImageView을 사용하십시오.
  2. MvxDownloadCacheConfiguration을 사용하면 필요에 따라 캐시 옵션을 맞춤 설정할 수 있습니다.
+0

바인딩은 어떻게 작동합니까? 'MvxImageView'에는 이미지의 URL을 바인딩 할 수있는 속성이 있습니까? 그 외 모든 것은 라이브러리에서 수행합니까? – Darius

+1

당신은'ImageUrl' 바인딩을 사용할 수 있습니다. 다른 모든 것은 도서관에서 처리해야합니다. –

+0

'MvxDownloadCacheConfiguration.Default.MaxFiles = 1;'을 설정했는데'ImageUrl'을 인터넷상의 2 개의 다른 이미지에 바인딩 할 때 2 개의 이미지를 다운로드 할 수있었습니다. 그래서 간단하지 않다고 생각하지 않습니다. – Darius

관련 문제