【问题标题】:Firestore: When should I detach the snapshot listener which updates a TextView in the navigation DrawerLayout? [duplicate]Firestore:我应该何时分离更新导航 DrawerLayout 中的 TextView 的快照侦听器? [复制]
【发布时间】:2019-04-25 20:46:15
【问题描述】:

在我的导航抽屉布局中,我在文本视图中显示了用户的登录信息。如果他单击标题为“编辑个人资料”的按钮,然后提交相应的表格,则可以更改后者。这就是我使用快照监听器的原因,它会更新文本视图。

由于导航抽屉布局在任何执行时间都存在,我应该什么时候分离监听器?

如果用户单击“注销”按钮,我可以将其分离,但如果他从不单击它怎么办?

【问题讨论】:

  • 无论您使用什么视图或登录或注销时,您都应该根据活动的生命周期分离监听器。登录是持久的,并且会一直保留到您调用 signOut API,因此请检查副本以了解如何实现此目的。

标签: android google-cloud-firestore android-snapshot


【解决方案1】:

更好的做法是第一次将登录保存在 sharedPref 中,并在需要时一直获取它以便在 textView 中进行设置。因此,在这种情况下,您无需在抽屉打开时一直发出请求。第二个优点是它会工作得更快。第三个优点是您将减少请求的数量,而不是一直发出请求,您只需在需要时发出更新请求,因此您将发出一个更新请求,而不是数千个相同的读取请求,一切都将在本地发生。即使用户没有互联网连接,textView 也会显示所需的信息。如果你有很多用户因为谷歌云的延迟而你不会付钱。它还回答了如何处理听众的问题

【讨论】:

  • 谢谢!如果我不能使用共享首选项,而只能使用 Firestore 快照侦听器的 NoSQL 查询:您将如何处理我的问题?
  • @JarsOfJam-Scheduler 这就是我所说的。请仔细阅读我的回答。您需要避免一直为此 textView 进行查询。您将为此向 Google 云支付费用。您需要更改代码的逻辑,而不是进行所有查询,您只需将其同时保存在 Firebase 和 SharedPref 中。对于 textView 而不是从 Firebase 获取名称,您将从本地存储 SharedPref 获取它。尝试计算您打算对 3-4-5 个字段执行多少次查询 - 数百万。你会为此付出代价。你需要改变逻辑
  • 我正确理解了您的回答。但是在某些情况下(除了我描述的上下文)可能需要查询数据库,这就是我要求这样做的原因。
  • 我的回答有用吗?如果是这样,您可以将其标记为答案吗?
  • 嗨鲍里斯:)!感谢我的意图:)。它现在被标记为答案。再次感谢我的朋友'
猜你喜欢
  • 1970-01-01
  • 2021-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-12
  • 1970-01-01
  • 1970-01-01
  • 2018-11-15
相关资源
最近更新 更多