Android : Intent 还是 Handler + listener + runnable?
Android : Intent or Handler + listener + runnable?
我的应用程序正在后台线程中解析来自 inputStream 的数据。它必须推动
根据读取的数据向 gui 发送消息。
几个月前我做了一个类似这样的实现:
- activity 实现了特定的侦听器接口(每个消息类型一个方法,消息参数作为方法的结构化参数传递)。
- activity 在某处注册监听器。
- 每次读取线程有东西要推送到 activity 时,它会创建
被推送到处理程序的可运行对象(在 gui 线程中创建)。可运行的
在activity线程中执行,调用监听器的方法
这很顺利,但是...
前几天看书的时候发现了意图。项目可能会取代
这个结构通过一个简单的意图广播在需要时注册 activity
意图。
今天,我想知道哪种解决方案在性能方面最合适。
当然,就 类 的数量而言,第一个解决方案更为复杂,但是
不假定性能...
有人知道吗?
谢谢
朱利安
I wonder which solution would fit the best in terms of performance
这取决于您所说的 "a simple intent broadcast" 是什么意思。
如果你的意思是你在你的 Activity
或其他 Context
上调用 sendBroadcast()
和 registerReceiver()
,那么性能会更差,因为这涉及到进程通信(IPC),即使广播者和接收者在同一个进程中。它还会引发安全问题,因为系统上的任何应用程序都可以向您发送这些广播。
如果您的意思是您在 LocalBroadcastManager
的单例实例上调用 sendBroadcast()
和 registerReceiver()
,那很好,并且应该与您使用的速度相当. LocalBroadcastManager
实现进程内事件总线,消除系统级广播的开销和安全问题。
就个人而言,我会使用另一个事件总线实现,例如 greenrobot's EventBus,以便于编程。
你应该知道,如果使用广播,你会在很长一段时间后收到结果(比如延迟)
我的应用程序正在后台线程中解析来自 inputStream 的数据。它必须推动 根据读取的数据向 gui 发送消息。
几个月前我做了一个类似这样的实现:
- activity 实现了特定的侦听器接口(每个消息类型一个方法,消息参数作为方法的结构化参数传递)。
- activity 在某处注册监听器。
- 每次读取线程有东西要推送到 activity 时,它会创建 被推送到处理程序的可运行对象(在 gui 线程中创建)。可运行的 在activity线程中执行,调用监听器的方法
这很顺利,但是...
前几天看书的时候发现了意图。项目可能会取代 这个结构通过一个简单的意图广播在需要时注册 activity 意图。
今天,我想知道哪种解决方案在性能方面最合适。 当然,就 类 的数量而言,第一个解决方案更为复杂,但是 不假定性能...
有人知道吗?
谢谢
朱利安
I wonder which solution would fit the best in terms of performance
这取决于您所说的 "a simple intent broadcast" 是什么意思。
如果你的意思是你在你的 Activity
或其他 Context
上调用 sendBroadcast()
和 registerReceiver()
,那么性能会更差,因为这涉及到进程通信(IPC),即使广播者和接收者在同一个进程中。它还会引发安全问题,因为系统上的任何应用程序都可以向您发送这些广播。
如果您的意思是您在 LocalBroadcastManager
的单例实例上调用 sendBroadcast()
和 registerReceiver()
,那很好,并且应该与您使用的速度相当. LocalBroadcastManager
实现进程内事件总线,消除系统级广播的开销和安全问题。
就个人而言,我会使用另一个事件总线实现,例如 greenrobot's EventBus,以便于编程。
你应该知道,如果使用广播,你会在很长一段时间后收到结果(比如延迟)