Interface FlagTracker
-
public interface FlagTracker
An interface for tracking changes in feature flag configurations.An implementation of this interface is returned by
LDClientInterface.getFlagTracker()
. Application code never needs to implement this interface.- Since:
- 5.0.0
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description void
addFlagChangeListener(FlagChangeListener listener)
Registers a listener to be notified of feature flag changes in general.FlagChangeListener
addFlagValueChangeListener(java.lang.String flagKey, LDContext context, FlagValueChangeListener listener)
Registers a listener to be notified of a change in a specific feature flag's value for a specific evaluation context.void
removeFlagChangeListener(FlagChangeListener listener)
Unregisters a listener so that it will no longer be notified of feature flag changes.
-
-
-
Method Detail
-
addFlagChangeListener
void addFlagChangeListener(FlagChangeListener listener)
Registers a listener to be notified of feature flag changes in general.The listener will be notified whenever the SDK receives any change to any feature flag's configuration, or to a user segment that is referenced by a feature flag. If the updated flag is used as a prerequisite for other flags, the SDK assumes that those flags may now behave differently and sends flag change events for them as well.
Note that this does not necessarily mean the flag's value has changed for any particular evaluation context, only that some part of the flag configuration was changed so that it may return a different value than it previously returned for some context. If you want to track flag value changes, use
addFlagValueChangeListener(String, LDContext, FlagValueChangeListener)
instead.If using the file data source (
FileData
), any change in a data file will be treated as a change to every flag. Again, useaddFlagValueChangeListener(String, LDContext, FlagValueChangeListener)
(or just re-evaluate the flag yourself) if you want to know whether this is a change that really affects a flag's value.Change events only work if the SDK is actually connecting to LaunchDarkly (or using the file data source). If the SDK is only reading flags from a database (
Components.externalUpdatesOnly()
) then it cannot know when there is a change, because flags are read on an as-needed basis.The listener will be called from a worker thread.
Calling this method for an already-registered listener has no effect.
- Parameters:
listener
- the event listener to register- See Also:
removeFlagChangeListener(FlagChangeListener)
,FlagChangeListener
,addFlagValueChangeListener(String, LDContext, FlagValueChangeListener)
-
removeFlagChangeListener
void removeFlagChangeListener(FlagChangeListener listener)
Unregisters a listener so that it will no longer be notified of feature flag changes.Calling this method for a listener that was not previously registered has no effect.
- Parameters:
listener
- the event listener to unregister- See Also:
addFlagChangeListener(FlagChangeListener)
,addFlagValueChangeListener(String, LDContext, FlagValueChangeListener)
,FlagChangeListener
-
addFlagValueChangeListener
FlagChangeListener addFlagValueChangeListener(java.lang.String flagKey, LDContext context, FlagValueChangeListener listener)
Registers a listener to be notified of a change in a specific feature flag's value for a specific evaluation context.When you call this method, it first immediately evaluates the feature flag. It then uses
addFlagChangeListener(FlagChangeListener)
to start listening for feature flag configuration changes, and whenever the specified feature flag changes, it re-evaluates the flag for the same context. It then calls yourFlagValueChangeListener
if and only if the resulting value has changed.All feature flag evaluations require an instance of
LDContext
. If the feature flag you are tracking does not have any user targeting rules, you must still pass a dummy context such asLDContext.create("for-global-flags")
. If you do not want the user to appear on your dashboard, use theanonymous
property:LDContext.builder("for-global-flags").anonymous(true).build()
.The returned
FlagChangeListener
represents the subscription that was created by this method call; to unsubscribe, pass that object (not yourFlagValueChangeListener
) toremoveFlagChangeListener(FlagChangeListener)
.- Parameters:
flagKey
- the flag key to be evaluatedcontext
- the evaluation contextlistener
- an object that you provide which will be notified of changes- Returns:
- a
FlagChangeListener
that can be used to unregister the listener - Since:
- 6.0.0
-
-