Android:Intent还是Handler + listener + runnable?

时间:2015-05-24 11:11:36

标签: android multithreading android-intent handler runnable

我的应用正在从后台线程中的inputStream解析数据。它必须推动 根据读取的数据发送给gui的消息。

几个月前,我做了一个类似这样的实现:

  • activiy实现一个特定的侦听器接口(每种消息类型一个方法,消息参数作为方法的结构化参数传递)。
  • 活动在某处注册了监听器。
  • 每次阅读主题都有东西要推送到活动时,它就会创建 一个被推送到处理程序的runnable(在gui线程中创建)。可运行的 在活动线程中执行并调用侦听器的方法。

这很顺利但是......

几天前,在读书时,我发现了意图。 Itents可能会取代 这个结构是一个简单的意图广播,活动注册需要 意图。

今天,我想知道哪种解决方案在性能方面最合适。 当然,第一种解决方案在类数方面更复杂但是 不假设表现......

有人有任何线索吗?

由于

于连

2 个答案:

答案 0 :(得分:2)

  

我想知道哪种解决方案在性能方面最合适

这取决于你的意思"一个简单的意图广播"。

如果您的意思是在sendBroadcast()或其他registerReceiver()上呼叫ActivityContext,则性能会更差,因为这涉及进程间通信(IPC),即使广播公司和接收方处于相同的过程中。它还会引发安全问题,因为系统上的任何应用都可以向您发送这些广播。

如果您的意思是在sendBroadcast()的单例实例上调用registerReceiver()LocalBroadcastManager,那很好,并且应该与您使用的速度相当。 LocalBroadcastManager实现了一个进程内事件总线,消除了系统级广播的开销和安全问题。

就个人而言,我会使用另一个事件总线实现,如greenrobot's EventBus,以便于编程。

答案 1 :(得分:2)

您应该知道,如果使用广播,您将在稍后的时间内收到结果(比如延迟)