处理程序或听众。事件通知有什么用?什么是更快,更有效等??
答案 0 :(得分:8)
这是一个很好的问题!
使用处理程序的方案
我在我的应用程序中运行了一个Android后台服务,它使用专门用于Web通信的处理程序 - 我决定采用这种方式,因为处理程序将对请求进行排队并逐个执行,因此我知道序列仍然存在完好。
例如,在即时消息应用程序中,您可能会发现维护聊天序列是可取的。
使用回调的方案
我的后台服务也使用从硬件读取的类(在单独的线程中);某些数据可能随时进入,需要立即处理。对于那个类,我实现了一个监听器/回调接口。
我唯一的问题是,对于处理程序的大小是否有任何礼仪。 我有大约50条独特的消息:
处理程序需要大约60%的服务代码 - 正如您可以想象的那样,这会产生一个非常大的开关(case {})结构(几乎1000行代码)。太大?如何分开?
答案 1 :(得分:3)
没有Listener类型,它只是回调接口的命名约定。所以如果你想在同一个线程上同步处理你的事件,你就可以使用它们。
然而,Handler是一个Android类...你用它来从提升事件的线程(例如“下载完成”)传递消息和runnables到需要处理它的线程(例如UI线程)。 / p>