Android 设备脱机时显示消息未发送,设备联机时显示消息已发送firebase firestore

Android 设备脱机时显示消息未发送,设备联机时显示消息已发送firebase firestore,android,firebase,kotlin,google-cloud-firestore,Android,Firebase,Kotlin,Google Cloud Firestore,该应用程序用于发送消息,使用Firebase Firestore 我想通知用户消息是否发送到服务器。 为此,我在消息实体中添加了“sent(Boolean)”属性,当我以(sent=false)的形式发送消息时,它可以正常工作 我在我的视图中控制它 if (!message.sent) { viewHolder.text_message_status_indicator.background = ContextCompat.getDrawable(context, R

该应用程序用于发送消息,使用Firebase Firestore 我想通知用户消息是否发送到服务器。 为此,我在消息实体中添加了“sent(Boolean)”属性,当我以(sent=false)的形式发送消息时,它可以正常工作

我在我的视图中控制它

  if (!message.sent) {
            viewHolder.text_message_status_indicator.background = ContextCompat.getDrawable(context, R.drawable.ic_baseline_access_time_24)
        }
问题是当设备再次联机时,消息属性未更新(包括sent=true)


请帮我解决这个问题

要检测消息是来自本地缓存还是来自服务器上的数据库,最好使用
DocumentSnapshot.getMetadata().hasPendingWrites()
。如果此属性为
true
,则数据尚未写入服务器。如果为
false
,则表示数据已提交到服务器


有关此示例,请参阅上的Firestore文档。

querySnapshot!!。documents.forEach{val message=it.toObject(TextMessage::class.java)!!message.sent=!it.metadata.hasPendingWrites()当我发送消息时,消息会自动更新,并且最后一个(发送的)消息文档hasPendingWrites()等于trueOk我添加了MetadataChanges.INCLUDE(到消息的snaplshotlistener),因此工作正常。谢谢帮助
  if (!message.sent) {
            viewHolder.text_message_status_indicator.background = ContextCompat.getDrawable(context, R.drawable.ic_baseline_access_time_24)
        }