【问题标题】:How to remove listener from task?如何从任务中删除监听器?
【发布时间】:2019-01-30 16:42:04
【问题描述】:

我正在为从 Firestore get() 请求返回的任务添加侦听器:

myQuery.get().addOnSuccessListener(Runnable::run) 
    { 
       /*does something*/ 
    }

我知道我可以使用 addOnSuccessListener(activity, ...) 将侦听器限定为活动,这将在活动停止时删除侦听器。但是,为了保持我的代码干净,我需要自己删除监听器(当包装请求的 rxJava 可观察对象被处理时 - 使用

emitter.setCancellable{ 
/*remove the listener here*/ 
}

)。

如何从任务中移除监听器?

【问题讨论】:

标签: android firebase kotlin google-cloud-firestore listener


【解决方案1】:

不要使用Task 侦听器,而是在Query 本身上尝试adding a snapshot listener

此方法返回具有remove 方法的ListenerRegistration 对象。

【讨论】:

  • 我想我可以添加一个快照监听器,并在第一次更新后以及需要处理时调用 ListenerRegistration 上的 remove。不过这似乎很脏,我很困惑为什么不能对简单的 get 请求进行同样的操作。
猜你喜欢
  • 1970-01-01
  • 2016-01-23
  • 2014-02-17
  • 2019-02-05
  • 2013-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多