package com.prateekj.snooper.infra; import android.app.Activity; import android.app.Application; import android.os.Bundle; import java.util.ArrayList; import java.util.List; public class CurrentActivityManager implements Application.ActivityLifecycleCallbacks { private static CurrentActivityManager sInstance; public interface Listener { void currentActivity(Activity activity); } private final List<Listener> listeners = new ArrayList<>(); private CurrentActivityManager(Application application) { application.registerActivityLifecycleCallbacks(this); } public static CurrentActivityManager getInstance(Application application) { if (sInstance == null) { sInstance = new CurrentActivityManager(application); } return sInstance; } public void registerListener(Listener listener) { listeners.add(listener); } public void unregisterListener(Listener listener) { listeners.remove(listener); } @Override public void onActivityResumed(Activity activity) { notifyListeners(activity); } @Override public void onActivityPaused(Activity activity) { notifyListeners(activity); } private void notifyListeners(Activity activity) { for (Listener listener : listeners) { listener.currentActivity(activity); } } @Override public void onActivityStopped(Activity activity) { } @Override public void onActivityCreated(Activity activity, Bundle savedInstanceState) { } @Override public void onActivityStarted(Activity activity) { } @Override public void onActivitySaveInstanceState(Activity activity, Bundle outState) { } @Override public void onActivityDestroyed(Activity activity) { } }