我有一个Android应用程序,它使用Firebase作为后端。在我的数据库中,我有一个名为USER_NOTIFICATIONS
的部分,当用户的帖子被喜欢时会填充一些信息。
现在,在应用程序中,我是否应该在通知发生时触发ChildEventListener
,或者我应该在函数内部使用SingleValueEventListener
并在{{1}内每隔20秒调用一次Runnable
}}?在SingleEventListener
中运行Runnable
是否很昂贵?
答案 0 :(得分:1)
侦听器的大部分资源使用来自它读取的数据。将侦听器附加到某个位置时,它会从该位置读取数据并触发相关事件。
如果您使用addListenerForSingleValueEvent
那就完全了。但是,如果您使用addValueEventListener
或addChildEventListener
,则侦听器将保持活动状态,并且如果之后更新数据,也会调用该侦听器。
一个永不改变的数据上的监听器非常便宜。但是,对于经常更改的数据保持监听,与数据大小的变化一样昂贵。
换句话说:如果不了解上述所有内容,就无法告诉您该做什么。在不了解这些情况的情况下,我会采用最简单的方法,进行一些测量,并在您发现有关应用程序行为的更多信息时进行优化。
答案 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个操作指定不同的行为(ChildEventListener
,onChildAdded
,onChildChanged
和onChildMoved
)。