我正在从Android BluetoothChat sample app学习,并注意到他们正在使用处理程序向UI发送更新here。我想知道他们为什么不喜欢使用回调/监听器向UI发送更新?
答案 0 :(得分:3)
我的猜测是因为Handler在创建的线程上发布了消息。如果您使用回调,则必须注意调用runOnUiThread(Runnable)以执行任何类型的UI更改。
答案 1 :(得分:1)
猜猜看。 Handler是一个完美的异步解决方案。只需将消息发送到MessageQueue,Handler(UI线程)将从中获取消息。它可以降低模块的复杂性。
CallBacks是另一种解决方案,但根据Handler来更新UI。
答案 2 :(得分:0)
我认为,因为BluetoothChatService是服务,并且将回调从活动传递到服务(泄漏问题等)不是一个好的设计,所以默认情况下处理程序已附加到UI线程,并且活动也正在使用该线程!因此,这是在处理程序中传递数据的更好,更安全的方式,活动可以在需要时随时使用它,而且它是泄漏安全的,并且是完全分离的方式