在Android中使用回调vs使用Handler?

时间:2015-12-09 03:16:26

标签: java android callback listener handler

我正在从Android BluetoothChat sample app学习,并注意到他们正在使用处理程序向UI发送更新here。我想知道他们为什么不喜欢使用回调/监听器向UI发送更新?

3 个答案:

答案 0 :(得分:3)

我的猜测是因为Handler在创建的线程上发布了消息。如果您使用回调,则必须注意调用runOnUiThread(Runnable)以执行任何类型的UI更改。

答案 1 :(得分:1)

猜猜看。 Handler是一个完美的异步解决方案。只需将消息发送到MessageQueue,Handler(UI线程)将从中获取消息。它可以降低模块的复杂性。

CallBacks是另一种解决方案,但根据Handler来更新UI。

答案 2 :(得分:0)

我认为,因为BluetoothChatService是服务,并且将回调从活动传递到服务(泄漏问题等)不是一个好的设计,所以默认情况下处理程序已附加到UI线程,并且活动也正在使用该线程!因此,这是在处理程序中传递数据的更好,更安全的方式,活动可以在需要时随时使用它,而且它是泄漏安全的,并且是完全分离的方式