2017-06-11 7 views
0

プリミティブデータと画像からなる オブジェクトを保存してロードするベストプラクティスについてのアドバイスが必要です。私はすでに動作しているバージョンを実装していますが、この方法がうまくいけばわかりません。トラフィック量の少ないFBストレージから画像をロードするためのベストプラクティス

アプリ:
ユーザーには車のコレクションがあり、そこに追加または削除したり、この車に関する詳細を表示することができます。

このような車オブジェクトの例。

Car 
    -Name:"Golf 42" 
    -Manufacturer:"VW" 
    -Image:The image 

現状:
以外のすべての画像データは、私のFirebaseリアルタイムデータベース内に格納され、いつでもアプリが開始/におけるユーザーのサイン照会ます しかしIAMがわからないいただきました画像を保存するためのベストプラクティス。自体。

私はFirebaseストレージデータベースおよびダウンロードに画像を保存し、FirebaseUiと私のローカルビューにそれらを結合して(ここではhttps://firebase.google.com/docs/storage/android/download-files示すように) を滑空することができます知っている

IAMが今やって何ですが、IAM使用がアプリと対話している間に数回読み込まれる可能性があるコレクション内の画像のベストプラクティスであるかどうかは不明です。 またはアプリ起動ごとに少なくとも1回

私の2番目のアイデアは、構造化された方法でFBストレージから "欠落した"イメージをダウンロードすることでした。 ユーザーが新しい車を自分のコレクションに追加すると、アプリは画像をダウンロードしてデバイスに保存します。 ビューは、モバイルトラフィックを節約するために、常にこれらの保存されたイメージを使用します。 私の考えでは、これは少しパフォーマンスを改善するはずです。
I車をrecyclerview内に表示します。典型的なすべてのユーザーは、彼女のコレクションの車のちょうど束を持っている必要があります、私は多くのユーザーが100台の車を収集するとは思わない。

しかし、これが良い練習か、このfirebaseUi Glideのものにとどまっているかわかりません。

+0

グライドが自動的にキャッシュされます。 – Linxy

+0

グライドを強制的にキャッシュに入れてからビューにアタッチすることはできますか?今、私は次の問題が発生しました:ユーザがアプリケーションを起動してサインインします。コレクション(Recyclerview with Images)が押されると、Images(または少なくともいくつか)はまだFirebaseストレージからダウンロードされていません。したがって、それらは空白です。しばらくしてから(数秒程度)画像ビューにデータを入れることができます。 – Rantir

答えて

0

@Rantirグライドキャッシュデフォルトでは、あなたのための画像、あなたはウルのニーズごとにそれらを設定することができます参照してください(https://github.com/bumptech/glide/wiki/Caching-and-Cache-Invalidation)といくつかのより多くの情報@(https://futurestud.io/tutorials/glide-caching-basics
そしてWRT空白の画像を取得し、Uはで「Placehloder」を使用することができますグライド、https://futurestud.io/tutorials/glide-placeholders-fade-animations

ベストプラクティス、私はそれがベストプラクティスかどうかを保証することはできませんが、あなたは私のアプリで一度使ったことを試すことができます。あなたのFbStorage Imageのrefrence/URiをFBDatabaseに保存することができます。&次にFBDatabase refを参照してValueEventListnerを使用してビューを作成してください。この方法でUUアプリケーション&の画像部分をよりよく制御できます。 FB持続性(https://firebase.google.com/docs/database/android/offline-capabilities)を有効にしてより良い経験を得る

関連する問題