处理程序或听众。什么是更好的?

时间:2010-12-10 09:01:53

标签: android listener handler

处理程序或听众。事件通知有什么用?什么是更快,更有效等??

2 个答案:

答案 0 :(得分:8)

这是一个很好的问题!

使用处理程序的方案

我在我的应用程序中运行了一个Android后台服务,它使用专门用于Web通信的处理程序 - 我决定采用这种方式,因为处理程序将对请求进行排队并逐个执行,因此我知道序列仍然存在完好。

例如,在即时消息应用程序中,您可能会发现维护聊天序列是可取的。

使用回调的方案

我的后台服务也使用从硬件读取的类(在单独的线程中);某些数据可能随时进入,需要立即处理。对于那个类,我实现了一个监听器/回调接口。


我唯一的问题是,对于处理程序的大小是否有任何礼仪。 我有大约50条独特的消息:

  • 传出的Web请求包含大约25条消息(每条消息是Web服务器上的不同API)
  • 每个API都会返回一个响应,因此还有另外25个传入的网络 反应

处理程序需要大约60%的服务代码 - 正如您可以想象的那样,这会产生一个非常大的开关(case {})结构(几乎1000行代码)。太大?如何分开?

答案 1 :(得分:3)

没有Listener类型,它只是回调接口的命名约定。所以如果你想在同一个线程上同步处理你的事件,你就可以使用它们。

然而,Handler是一个Android类...你用它来从提升事件的线程(例如“下载完成”)传递消息和runnables到需要处理它的线程(例如UI线程)。 / p>