39 lines
1.3 KiB
Java
39 lines
1.3 KiB
Java
package androidx.activity.contextaware;
|
|
|
|
import android.content.Context;
|
|
import androidx.annotation.NonNull;
|
|
import androidx.annotation.Nullable;
|
|
import java.util.Set;
|
|
import java.util.concurrent.CopyOnWriteArraySet;
|
|
public final class ContextAwareHelper {
|
|
private volatile Context mContext;
|
|
private final Set<OnContextAvailableListener> mListeners = new CopyOnWriteArraySet();
|
|
|
|
public void addOnContextAvailableListener(@NonNull OnContextAvailableListener onContextAvailableListener) {
|
|
if (this.mContext != null) {
|
|
onContextAvailableListener.onContextAvailable(this.mContext);
|
|
}
|
|
this.mListeners.add(onContextAvailableListener);
|
|
}
|
|
|
|
public void clearAvailableContext() {
|
|
this.mContext = null;
|
|
}
|
|
|
|
public void dispatchOnContextAvailable(@NonNull Context context) {
|
|
this.mContext = context;
|
|
for (OnContextAvailableListener onContextAvailableListener : this.mListeners) {
|
|
onContextAvailableListener.onContextAvailable(context);
|
|
}
|
|
}
|
|
|
|
@Nullable
|
|
public Context peekAvailableContext() {
|
|
return this.mContext;
|
|
}
|
|
|
|
public void removeOnContextAvailableListener(@NonNull OnContextAvailableListener onContextAvailableListener) {
|
|
this.mListeners.remove(onContextAvailableListener);
|
|
}
|
|
}
|