NativeScriptがシングルスレッドであることを認識しています。リストビューで画面間に30〜40の画像を表示する必要のあるアプリケーションを構築する。ただし、一度ダウンロードされると、URLが直接バインドされているとイメージはキャッシュされません。最初-page.xmlでスニペットListView用にNativeScriptでサーバーから画像を取得中にアプリケーションが応答しない
<ListView images={{images}}>
<Image src={{theImageUrl}}></Image>
</ListView>
最初のページと2ページの間で前後に横断しながら、画像を再ダウンロードしてキャッシュされていないと仮定する。これを防止するために、すべての画像については、次のロジックを実装:
imageSource.fromUrl("theImageUrl").then(function(res){
//code to save the image to either temp or the documents folder
});
しかし、40枚の画像は、少なくとも20必要 - 高いアプリケーションの初期化時間をもたらす、ロードするために22秒。
回避策は、バックグラウンドでイメージをダウンロードし、ダウンロードが完了したらイメージsrcプロパティ(theImageUrl)をローカルイメージパスに切り替えて、ユーザーにそのアプリケーションを見せてからそれまでに対話させることです。
この方法では、すべての画像がダウンロードされるまでアプリが応答しなくなり、画面のタップはキャプチャされません。
解決策はありますか?誰かがこれを見つけましたか?メインのUIスレッドに画像をダウンロードすることは、私が想定している問題の原因です。
イメージキャッシュモジュールを使ってみましたか?{N}ドキュメントの使い方のリンクは、https://docs.nativescript.org/ApiReference/ui/image-cache/HOW-TOにあります。 html –
また、画像でAndroidのメモリ処理にフレスコ画やPicassoを使用することもできます。どちらのライブラリにもプラグインがあります –
iOS向けのソリューションはありますか? – basum