質問編集履歴
1
メッセージ修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -6,7 +6,9 @@
|
|
6
6
|
|
7
7
|
原因として、推測されるのは以下のように画像の取得で用いられるFirebaseStorageとそれ以外の取得に用いられるRealtimedatabaseそれぞれが非同期処理で動いているためかと思われます。
|
8
8
|
|
9
|
-
例えば、realtimeDatabase側の「for(DataSnapshot ds・・・」の4ループ目が画像1だったとして、その画像データの取得(FireStorage側)が完了した時、Realtimedatabaseが7ループ目まで進んでいたとしたら、本来4ループ目のmessageDataBeanに画像データを入れるはずが
|
9
|
+
例えば、realtimeDatabase側の「for(DataSnapshot ds・・・」の4ループ目が画像1だったとして、その画像データの取得(FireStorage側)が完了した時、Realtimedatabaseが7ループ目まで進んでいたとしたら、本来4ループ目のmessageDataBeanに画像データを入れるはずが7ループ目のmessageDataBeanを更新してしまうということです。
|
10
|
+
|
11
|
+
これを防ぐには例えば4ループ目で取得し始めた画像を取得完了後に、4ループ目のList<messageDataBean>の要素(messageDataBean)の画像フィールドにセット、8ループ目で取得しようとした画像を8ループ目のListの要素にセットというように処理を実装する必要があるのですが、その方法を教えていただけないでしょうか。
|
10
12
|
|
11
13
|
|
12
14
|
|
@@ -109,9 +111,3 @@
|
|
109
111
|
});
|
110
112
|
|
111
113
|
```
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
画像処理とrealtimedbの処理が連なっておらず非同期の中で画面更新をかけているので、表示内容の整合性が取れていないことにあると考えられる。
|
116
|
-
|
117
|
-
ただ、非同期でないと画像が全て取得できるまでフリーズするので、画像が取得できたらその都度整合性を保ったまま(順番を保ったまま)マージして表示する必要がある。
|