私は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);
});
私が何か間違ったことをやっているように私は感じて...
バインディングはどのように機能しますか? 'MvxImageView'は、画像のURLをバインドできるプロパティを持っていますか?それ以外はライブラリによって行われますか? – Darius
あなたは 'ImageUrl'バインディングを使うことができます。他のすべては図書館で世話をするべきです。 –
'MvxDownloadCacheConfiguration.Default.MaxFiles = 1;'を設定しましたが、 'ImageUrl'をインターネット上の2つの異なるイメージにバインドするときに2つのイメージをダウンロードできました。だから私はそれが単純だとは思わない。 – Darius