2017-10-20 7 views
2

私はAndroidプロジェクトでMvvmCrossを使用しています。私はMvxRecyclerViewに各項目(URLからダウンロード)の画像が入っていて、何百もの項目があるので、画像/メモリを管理するためにDownloadCacheプラグインを使用したいので、私のアプリはOutOfMemory例外です。DownloadCacheプラグインの使用方法は?

理想的には、画像/メモリの制限に達すると、ダウンロードされた最初の画像(MvxRecyclerViewの最も目に見えない項目)を解放して、その画像で次の表示可能な項目のためのスペースを確保する必要があります。

私はここでそれのソースが見つかりました: https://github.com/MvvmCross/MvvmCross/tree/develop/MvvmCross-Plugins/DownloadCache

どのように私はこれを達成するために、このプラグインを使用することができますか?

EDIT

は、いくつかのことを試した後、私は私が呼び出したときに取得し、このエラーを超えるこだわっている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. MvxDownloadCacheConfigurationSetup.GetPluginConfigurationに変更すると、必要に応じてキャッシュオプションをカスタマイズできます。
+0

バインディングはどのように機能しますか? 'MvxImageView'は、画像のURLをバインドできるプロパティを持っていますか?それ以外はライブラリによって行われますか? – Darius

+1

あなたは 'ImageUrl'バインディングを使うことができます。他のすべては図書館で世話をするべきです。 –

+0

'MvxDownloadCacheConfiguration.Default.MaxFiles = 1;'を設定しましたが、 'ImageUrl'をインターネット上の2つの異なるイメージにバインドするときに2つのイメージをダウンロードできました。だから私はそれが単純だとは思わない。 – Darius

関連する問題