Firebase:对于通知使用childEventLisetener还是SingleEvent?

时间:2018-03-09 02:32:28

标签: android firebase firebase-realtime-database

我有一个Android应用程序,它使用Firebase作为后端。在我的数据库中,我有一个名为USER_NOTIFICATIONS的部分,当用户的帖子被喜欢时会填充一些信息。

现在,在应用程序中,我是否应该在通知发生时触发ChildEventListener,或者我应该在函数内部使用SingleValueEventListener并在{{1}内每隔20秒调用一次Runnable }}?在SingleEventListener中运行Runnable是否很昂贵?

2 个答案:

答案 0 :(得分:1)

侦听器的大部分资源使用来自它读取的数据。将侦听器附加到某个位置时,它会从该位置读取数据并触发相关事件。

如果您使用addListenerForSingleValueEvent那就完全了。但是,如果您使用addValueEventListeneraddChildEventListener,则侦听器将保持活动状态,并且如果之后更新数据,也会调用该侦听器。

一个永不改变的数据上的监听器非常便宜。但是,对于经常更改的数据保持监听,与数据大小的变化一样昂贵。

换句话说:如果不了解上述所有内容,就无法告诉您该做什么。在不了解这些情况的情况下,我会采用最简单的方法,进行一些测量,并在您发现有关应用程序行为的更多信息时进行优化。

答案 1 :(得分:0)

我假设您希望自己的应用响应数据库中的更改,在这种情况下,您应该使用if ((clipboard info) as string) contains "URL" then set thingsURL to "/tmp/thingsURL.tmp" try set f to open for access thingsURL with write permission set eof f to 0 write (the clipboard) to f close access f on error close access f end try set thingsURLtext to (read thingsURL) tell application "System Events" to delete file thingsURL display dialog thingsURLtext buttons {"OK"} default button 1 else display dialog "The clipboard did not contain a 'things:///show?id=' URL link." buttons {"OK"} default button 1 end if 。您可以为4个操作指定不同的行为(ChildEventListeneronChildAddedonChildChangedonChildMoved)。