package com.google.android.apps.common.testing.testrunner; import java.util.concurrent.atomic.AtomicReference; /** * An exposed registry instance to make it easy for callers to find the lifecycle monitor for their * application. * */ public final class ActivityLifecycleMonitorRegistry { private static final AtomicReference<ActivityLifecycleMonitor> lifecycleMonitor = new AtomicReference<ActivityLifecycleMonitor>(null); /** * Returns the ActivityLifecycleMonitor. * * This monitor is not guaranteed to be present under all instrumentations. * * @return ActivityLifecycleMonitor the monitor for this application. * @throws IllegalStateException if no monitor has been registered. */ public static ActivityLifecycleMonitor getInstance() { ActivityLifecycleMonitor instance = lifecycleMonitor.get(); if (null == instance) { throw new IllegalStateException("No lifecycle monitor registered! Are you running under an " + "Instrumentation which registers lifecycle monitors?"); } return instance; } /** * Stores a lifecycle monitor in the registry. * * This is a global registry - so be aware of the impact of calling this method! * @param monitor the monitor for this application. Null deregisters any existing monitor. */ public static void registerInstance(ActivityLifecycleMonitor monitor) { lifecycleMonitor.set(monitor); } private ActivityLifecycleMonitorRegistry() { } }