public final class WeakInvalidationListener extends java.lang.Object implements InvalidationListener, WeakListener
WeakInvalidationListener
can be used if an Observable
should only maintain a weak reference to the listener. This helps to avoid
memory leaks that can occur if observers are not unregistered from observed
objects after use.
A WeakInvalidationListener
is created by passing in the original
InvalidationListener
. The WeakInvalidationListener
should
then be registered to listen for changes of the observed object.
Note: You have to keep a reference to the InvalidationListener
that
was passed in as long as it is in use, otherwise it can be garbage collected
too soon.
InvalidationListener
,
Observable
Modifier and Type | Field and Description |
---|---|
private java.lang.ref.WeakReference<InvalidationListener> |
ref |
Constructor and Description |
---|
WeakInvalidationListener(InvalidationListener listener)
The constructor of
WeakInvalidationListener . |
Modifier and Type | Method and Description |
---|---|
void |
invalidated(Observable observable)
This method needs to be provided by an implementation of
InvalidationListener . |
boolean |
wasGarbageCollected()
Returns
true if the linked listener was garbage-collected. |
private final java.lang.ref.WeakReference<InvalidationListener> ref
public WeakInvalidationListener(InvalidationListener listener)
WeakInvalidationListener
.listener
- The original listener that should be notifiedpublic boolean wasGarbageCollected()
true
if the linked listener was garbage-collected.
In this case, the listener can be removed from the observable.wasGarbageCollected
in interface WeakListener
true
if the linked listener was garbage-collected.public void invalidated(Observable observable)
InvalidationListener
. It is called if an Observable
becomes invalid.
In general, it is considered bad practice to modify the observed value in this method.
invalidated
in interface InvalidationListener
observable
- The Observable
that became invalid