Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么Android事件回调是基于单播的?_Java_Android_Events_Event Handling_Observer Pattern - Fatal编程技术网

Java 为什么Android事件回调是基于单播的?

Java 为什么Android事件回调是基于单播的?,java,android,events,event-handling,observer-pattern,Java,Android,Events,Event Handling,Observer Pattern,在Java空间中,事件处理通常通过实现多播观察者模式的接口分派来完成。然而,在安卓系统上,许多界面的定义就像只有一个订阅者一样。例如,定义SetOnSeekbarchaneListener(..)而不是AddOnSeekbarchaneListener(..) 出于各种原因,如果组合的不同部分调用setOnSeekBarChangeListener(..),其中后一个调用会删除前一个订阅者,那么这可能是非常有限的,并且还会引入错误。。。安静地 为什么它在Android上以这种方式实现?当对现有小

在Java空间中,事件处理通常通过实现多播观察者模式的接口分派来完成。然而,在安卓系统上,许多界面的定义就像只有一个订阅者一样。例如,定义SetOnSeekbarchaneListener(..)而不是AddOnSeekbarchaneListener(..)

出于各种原因,如果组合的不同部分调用setOnSeekBarChangeListener(..),其中后一个调用会删除前一个订阅者,那么这可能是非常有限的,并且还会引入错误。。。安静地


为什么它在Android上以这种方式实现?当对现有小部件进行子类化时,我是否只需要滚动自己的事件处理,而不接触现有的外部公开的小部件?

“静默”不太可能。这些语义包含在方法名中:set(should)始终表示“将值更改为新值”。您始终可以对其进行扩展,并创建自己的实现。你不受限制我默默地说,因为如果组件B(组件a的一个子类)本身使用回调,并且组件B的用户希望能够将其用于自己的组件C,那么组件B将崩溃-组件C无法判断回调是否“被接受”B组分的显影剂也无法限制暴露。我想这是一个很好的例子,为什么组合比继承更受欢迎,但我仍然不明白为什么单播限制首先存在。