在Android中使用回调还是在使用Handler?

问题描述 投票:1回答:3

我从Android的BluetoothChat sample app学习,并注意到他们正在使用Handler向UI发送更新,如here所示。我想知道为什么他们不喜欢使用回调/侦听器向UI发送更新?

java android callback listener handler
3个回答
3
投票

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


1
投票

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

CallBacks是另一种解决方案,但是处理程序要更新UI则很复杂。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.