package ru.ltst.u2020mvp.ui; import android.app.Activity; import android.app.Application; import android.os.Bundle; import java.util.ArrayList; import java.util.List; /** * A "view server" adaptation which automatically hooks itself up to all activities. */ public interface ActivityHierarchyServer extends Application.ActivityLifecycleCallbacks { /** * An {@link ActivityHierarchyServer} which does nothing. */ ActivityHierarchyServer NONE = new ActivityHierarchyServer() { @Override public void onActivityCreated(Activity activity, Bundle bundle) { } @Override public void onActivityStarted(Activity activity) { } @Override public void onActivityResumed(Activity activity) { } @Override public void onActivityPaused(Activity activity) { } @Override public void onActivityStopped(Activity activity) { } @Override public void onActivitySaveInstanceState(Activity activity, Bundle bundle) { } @Override public void onActivityDestroyed(Activity activity) { } }; class Proxy implements ActivityHierarchyServer { private List<ActivityHierarchyServer> servers = new ArrayList<>(); public void addServer(ActivityHierarchyServer server) { servers.add(server); } public void removeServer(ActivityHierarchyServer server) { servers.remove(server); } @Override public void onActivityCreated(Activity activity, Bundle savedInstanceState) { for (ActivityHierarchyServer server : servers) { server.onActivityCreated(activity, savedInstanceState); } } @Override public void onActivityStarted(Activity activity) { for (ActivityHierarchyServer server : servers) { server.onActivityStarted(activity); } } @Override public void onActivityResumed(Activity activity) { for (ActivityHierarchyServer server : servers) { server.onActivityResumed(activity); } } @Override public void onActivityPaused(Activity activity) { for (ActivityHierarchyServer server : servers) { server.onActivityPaused(activity); } } @Override public void onActivityStopped(Activity activity) { for (ActivityHierarchyServer server : servers) { server.onActivityStopped(activity); } } @Override public void onActivitySaveInstanceState(Activity activity, Bundle outState) { for (ActivityHierarchyServer server : servers) { server.onActivitySaveInstanceState(activity, outState); } } @Override public void onActivityDestroyed(Activity activity) { for (ActivityHierarchyServer server : servers) { server.onActivityDestroyed(activity); } } } class Empty implements ActivityHierarchyServer { @Override public void onActivityCreated(Activity activity, Bundle savedInstanceState) { } @Override public void onActivityStarted(Activity activity) { } @Override public void onActivityResumed(Activity activity) { } @Override public void onActivityPaused(Activity activity) { } @Override public void onActivityStopped(Activity activity) { } @Override public void onActivitySaveInstanceState(Activity activity, Bundle outState) { } @Override public void onActivityDestroyed(Activity activity) { } } }