public class CallbackRegistry
extends Object
implements Cloneable
java.lang.Object | |
↳ | android.databinding.CallbackRegistry<C, T, A> |
Known Direct Subclasses |
用于存储和通知回调的实用程序。 此类支持在通知期间重新修改回调而不会不利地中断通知。 回调的常见模式是收到通知,然后删除自己。 在大多数情况下,该类使用常量内存来处理此行为。
必须将CallbackRegistry.NotifierCallback
的子类传递给构造函数以定义如何调用通知。 该实现会在侦听器上进行实际通知。 它通常是一个静态实例,可以用于所有类似的CallbackRegistries。
此类只支持最多三个参数的回调。 通常,这些是通知发起者和参数,另一个指示要调用哪个方法,但可以根据需要使用这些方法。 如果需要超过三个参数或者必须使用除提供的单个int之外的基本类型, A
应该是某种包含子类可以在通知之间重复使用的结构。
Nested classes |
|
---|---|
class |
CallbackRegistry.NotifierCallback<C, T, A> 用于从CallbackRegistry通知事件的类。 |
Public constructors |
|
---|---|
CallbackRegistry(NotifierCallback<C, T, A> notifier) 创建一个使用通知程序通知事件的EventRegistry。 |
Public methods |
|
---|---|
void |
add(C callback) 添加要通知的回调。 |
void |
clear() 从列表中删除所有回调。 |
CallbackRegistry<C, T, A> |
clone() 创建并返回此对象的副本。 |
ArrayList<C> |
copyCallbacks() 制作注册回调的副本并将其返回。 |
void |
copyCallbacks(List<C> callbacks) 修改 |
boolean |
isEmpty() 如果没有注册的回调,则返回true;否则返回false。 |
void |
notifyCallbacks(T sender, int arg, A arg2) 通知所有回调。 |
void |
remove(C callback) 删除回调。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
CallbackRegistry (NotifierCallback<C, T, A> notifier)
创建一个使用通知程序通知事件的EventRegistry。
Parameters | |
---|---|
notifier |
NotifierCallback : The class to use to notify events. |
void add (C callback)
添加要通知的回调。 如果回调已经在列表中,则不会添加另一个。 这不会影响当前的通知。
Parameters | |
---|---|
callback |
C : The callback to add. |
void clear ()
从列表中删除所有回调。
CallbackRegistry<C, T, A> clone ()
创建并返回此对象的副本。 “复制”的确切含义可能取决于对象的类别。 一般意图是,对于任何对象x
,表达式:
will be true, and that the expression:x.clone() != x
will bex.clone().getClass() == x.getClass()
true
, but these are not absolute requirements. While it is typically the case that:
will bex.clone().equals(x)
true
, this is not an absolute requirement.
按照惯例,应该通过调用super.clone
获得返回的对象。 如果一个类和它的所有超类( Object
除外)都遵守这个约定,那将是x.clone().getClass() == x.getClass()
。
按照惯例,这个方法返回的对象应该独立于这个对象(被克隆)。 为了实现这种独立性,可能有必要在返回super.clone
之前修改返回的对象的一个或多个字段。 通常,这意味着复制包含被克隆对象的内部“深层结构”的任何可变对象,并将这些对象的引用替换为对这些副本的引用。 如果一个类仅包含原始字段或对不可变对象的引用,那么通常情况下,不需要修改super.clone
返回的对象中的字段。
类Object
的方法clone
执行特定的克隆操作。 首先,如果该对象的类没有实现接口Cloneable
,则引发CloneNotSupportedException
。 请注意,所有阵列都被视为实现接口Cloneable
并且数组类型T[]
的clone
方法的返回类型为T[]
,其中T是任何引用或基本类型。 否则,此方法创建该对象的类的新实例,并使用该对象的相应字段的内容来初始化其所有字段,就像通过赋值一样; 这些字段的内容本身并不克隆。 因此,此方法执行此对象的“浅拷贝”,而不是“深拷贝”操作。
类 Object
本身并不实现接口 Cloneable
,所以在类 Object
的对象上调用 clone
方法将导致在运行时抛出异常。
Returns | |
---|---|
CallbackRegistry<C, T, A> |
A copy of the CallbackRegistry with all callbacks listening to both instances. |
ArrayList<C> copyCallbacks ()
制作注册回调的副本并将其返回。
Returns | |
---|---|
ArrayList<C> |
a copy of the registered callbacks. |
void copyCallbacks (List<C> callbacks)
修改 callbacks
以包含CallbackRegistry中的所有回调。
Parameters | |
---|---|
callbacks |
List : modified to contain all callbacks registered to receive events. |
boolean isEmpty ()
如果没有注册的回调,则返回true;否则返回false。
Returns | |
---|---|
boolean |
true if there are no registered callbacks or false otherwise. |
void notifyCallbacks (T sender, int arg, A arg2)
通知所有回调。
Parameters | |
---|---|
sender |
T : The originator. This is an opaque parameter passed to onNotifyCallback(Object, Object, int, Object) |
arg |
int : An opaque parameter passed to onNotifyCallback(Object, Object, int, Object) |
arg2 |
A : An opaque parameter passed to onNotifyCallback(Object, Object, int, Object) |
void remove (C callback)
删除回调。 此通话完成后将不会收到通知。
Parameters | |
---|---|
callback |
C : The callback to remove. |