package com.progscrape.ui; import android.app.Activity; import android.app.Application; import android.os.Bundle; import java.util.ArrayList; import java.util.List; import javax.inject.Inject; public class ActivityPauseNotifier { private List<ActivityPauseNotification> listeners = new ArrayList<>(); @Inject public ActivityPauseNotifier(final Application theApp, final Activity theActivity) { theApp.registerActivityLifecycleCallbacks(new Application.ActivityLifecycleCallbacks() { @Override public void onActivityCreated(Activity activity, Bundle savedInstanceState) { } @Override public void onActivityStarted(Activity activity) { } @Override public void onActivityResumed(Activity activity) { if (activity == theActivity) { List<ActivityPauseNotification> clone = new ArrayList<>(listeners); for (ActivityPauseNotification notification : clone) notification.onResume(); } } @Override public void onActivityPaused(Activity activity) { if (activity == theActivity) { List<ActivityPauseNotification> clone = new ArrayList<>(listeners); for (ActivityPauseNotification notification : clone) notification.onPause(); } } @Override public void onActivityStopped(Activity activity) { } @Override public void onActivitySaveInstanceState(Activity activity, Bundle outState) { } @Override public void onActivityDestroyed(Activity activity) { } }); } public void register(ActivityPauseNotification notifier) { listeners.add(notifier); } public void unregister(ActivityPauseNotification notifier) { listeners.remove(notifier); } public interface ActivityPauseNotification { void onPause(); void onResume(); } }