2017-10-20 284 views
2

我在我的Android項目中使用MvvmCross。我有一個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. 使用MvxImageView而不是ImageView
  2. 使用MvxDownloadCacheConfiguration中的Setup.GetPluginConfiguration覆蓋可根據需要自定義緩存選項。
+0

而且綁定是如何工作的? 'MvxImageView'是否有一個屬性可以綁定圖像的URL,其他的一切都是由庫完成的? – Darius

+1

你可以使用'ImageUrl'綁定。其他一切都應該由圖書館照顧。 –

+0

我設置了'MvxDownloadCacheConfiguration.Default.MaxFiles = 1;',但是當我把'ImageUrl'綁定到互聯網上的兩張不同的圖片時,我能夠下載2張圖片。所以我不認爲這很簡單.. – Darius