Java tutorial
/* * Copyright (C) 2012 uPhyca Inc. http://www.uphyca.com/ * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.granoeste.scaffold.lifecyclecallbacks; import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.annotation.TargetApi; import android.app.Activity; import android.app.Application; import android.app.Service; import android.content.Context; import android.content.ContextWrapper; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class LifecycleCallbacksSupportApplication extends Application { public static class SimpleActivityLifecycleCallbacks implements ActivityLifecycleCallbacks { @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) { } @Override public void onActivityAttachBaseContext(Activity activity, Context newBase) { } @Override public void onActivityAttachFragment(Activity activity, Fragment fragment) { } } public static class SimpleFragmentLifecycleCallbacks implements FragmentLifecycleCallbacks { @Override public void onFragmentCreated(Fragment fragment, Bundle savedInstanceState) { } @Override public void onFragmentStarted(Fragment fragment) { } @Override public void onFragmentResumed(Fragment fragment) { } @Override public void onFragmentPaused(Fragment fragment) { } @Override public void onFragmentStopped(Fragment fragment) { } @Override public void onFragmentSaveInstanceState(Fragment fragment, Bundle outState) { } @Override public void onFragmentDestroyed(Fragment fragment) { } @Override public void onFragmentAttach(Fragment fragment, Activity activity) { } @Override public void onFragmentDetach(Fragment fragment) { } @Override public void onFragmentActivityCreated(Fragment fragment, Bundle savedInstanceState) { } @Override public void onFragmentCreateView(Fragment fragment, LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { } @Override public void onFragmentViewCreated(Fragment fragment, View view, Bundle savedInstanceState) { } } public static LifecycleCallbacksSupportApplication applicationOf(Context context) { if (context instanceof Activity) { Activity activity = (Activity) context; Application app = activity.getApplication(); if (app instanceof LifecycleCallbacksSupportApplication) { return (LifecycleCallbacksSupportApplication) app; } } if (context instanceof Service) { Service service = (Service) context; Application app = service.getApplication(); if (app instanceof LifecycleCallbacksSupportApplication) { return (LifecycleCallbacksSupportApplication) app; } } Context appContext = context.getApplicationContext(); if (appContext instanceof LifecycleCallbacksSupportApplication) { return (LifecycleCallbacksSupportApplication) appContext; } if (context instanceof ContextWrapper) { Context base = ((ContextWrapper) context).getBaseContext(); if (base != null) { if (base instanceof LifecycleCallbacksSupportApplication) { return (LifecycleCallbacksSupportApplication) base; } Context baseAppContext = base.getApplicationContext(); if (baseAppContext instanceof LifecycleCallbacksSupportApplication) { return (LifecycleCallbacksSupportApplication) baseAppContext; } } } return null; } public interface ActivityLifecycleCallbacks { void onActivityCreated(Activity activity, Bundle savedInstanceState); void onActivityStarted(Activity activity); void onActivityResumed(Activity activity); void onActivityPaused(Activity activity); void onActivityStopped(Activity activity); void onActivitySaveInstanceState(Activity activity, Bundle outState); void onActivityDestroyed(Activity activity); void onActivityAttachBaseContext(Activity activity, Context newBase); void onActivityAttachFragment(Activity activity, Fragment fragment); } interface ActivityLifecycleCallbacksRegistry { void registerActivityLifecycleCallbacks(ActivityLifecycleCallbacks callback); void unregisterActivityLifecycleCallbacks(ActivityLifecycleCallbacks callback); void dispatchActivityAttachBaseContext(Activity activity, Context newBase); void dispatchActivityCreated(Activity activity, Bundle savedInstanceState); void dispatchActivityStarted(Activity activity); void dispatchActivityResumed(Activity activity); void dispatchActivityPaused(Activity activity); void dispatchActivityStopped(Activity activity); void dispatchActivitySaveInstanceState(Activity activity, Bundle outState); void dispatchActivityDestroyed(Activity activity); void dispatchActivityAttachFragment(Activity activity, Fragment fragment); } private static final class LegacyActivityLifecycleCallbacksRegistry implements ActivityLifecycleCallbacksRegistry { private WeakReference<Application> mApplication; private final List<ActivityLifecycleCallbacks> mActivityLifecycleCallbacks; public LegacyActivityLifecycleCallbacksRegistry(Application application) { mApplication = new WeakReference<>(application); mActivityLifecycleCallbacks = new ArrayList<>(); } @Override public void registerActivityLifecycleCallbacks(ActivityLifecycleCallbacks callback) { final Application application = mApplication.get(); if (application == null) { return; } synchronized (mActivityLifecycleCallbacks) { mActivityLifecycleCallbacks.add(callback); } } @Override public void unregisterActivityLifecycleCallbacks(ActivityLifecycleCallbacks callback) { final Application application = mApplication.get(); if (application == null) { return; } synchronized (mActivityLifecycleCallbacks) { mActivityLifecycleCallbacks.remove(callback); } } @Override public void dispatchActivityAttachBaseContext(Activity activity, Context newBase) { Object[] callbacks = collectActivityLifecycleCallbacks(); if (callbacks != null) { for (Object callback : callbacks) { ((ActivityLifecycleCallbacks) callback).onActivityAttachBaseContext(activity, newBase); } } } @Override public void dispatchActivityCreated(Activity activity, Bundle savedInstanceState) { Object[] callbacks = collectActivityLifecycleCallbacks(); if (callbacks != null) { for (Object callback : callbacks) { ((ActivityLifecycleCallbacks) callback).onActivityCreated(activity, savedInstanceState); } } } @Override public void dispatchActivityStarted(Activity activity) { Object[] callbacks = collectActivityLifecycleCallbacks(); if (callbacks != null) { for (Object callback : callbacks) { ((ActivityLifecycleCallbacks) callback).onActivityStarted(activity); } } } @Override public void dispatchActivityResumed(Activity activity) { Object[] callbacks = collectActivityLifecycleCallbacks(); if (callbacks != null) { for (Object callback : callbacks) { ((ActivityLifecycleCallbacks) callback).onActivityResumed(activity); } } } @Override public void dispatchActivityPaused(Activity activity) { Object[] callbacks = collectActivityLifecycleCallbacks(); if (callbacks != null) { for (Object callback : callbacks) { ((ActivityLifecycleCallbacks) callback).onActivityPaused(activity); } } } @Override public void dispatchActivityStopped(Activity activity) { Object[] callbacks = collectActivityLifecycleCallbacks(); if (callbacks != null) { for (Object callback : callbacks) { ((ActivityLifecycleCallbacks) callback).onActivityStopped(activity); } } } @Override public void dispatchActivitySaveInstanceState(Activity activity, Bundle outState) { Object[] callbacks = collectActivityLifecycleCallbacks(); if (callbacks != null) { for (Object callback : callbacks) { ((ActivityLifecycleCallbacks) callback).onActivitySaveInstanceState(activity, outState); } } } @Override public void dispatchActivityDestroyed(Activity activity) { Object[] callbacks = collectActivityLifecycleCallbacks(); if (callbacks != null) { for (Object callback : callbacks) { ((ActivityLifecycleCallbacks) callback).onActivityDestroyed(activity); } } } @Override public void dispatchActivityAttachFragment(Activity activity, Fragment fragment) { Object[] callbacks = collectActivityLifecycleCallbacks(); if (callbacks != null) { for (Object callback : callbacks) { ((ActivityLifecycleCallbacks) callback).onActivityAttachFragment(activity, fragment); } } } private Object[] collectActivityLifecycleCallbacks() { Object[] callbacks = null; synchronized (mActivityLifecycleCallbacks) { if (mActivityLifecycleCallbacks.size() > 0) { callbacks = mActivityLifecycleCallbacks.toArray(); } } return callbacks; } } /** * {@link LifecycleCallbacksSupportApplication.ActivityLifecycleCallbacksRegistry}?ICS?? */ @TargetApi(14) private static final class IceCreamSandwichActivityLifecycleCallbacksRegistry implements ActivityLifecycleCallbacksRegistry { private static final class DelegatingActivityLifecycleCallbacks implements Application.ActivityLifecycleCallbacks { private ActivityLifecycleCallbacks mCompat; public DelegatingActivityLifecycleCallbacks(ActivityLifecycleCallbacks compat) { mCompat = compat; } @Override public void onActivityCreated(Activity activity, Bundle savedInstanceState) { mCompat.onActivityCreated(activity, savedInstanceState); } @Override public void onActivityStarted(Activity activity) { mCompat.onActivityStarted(activity); } @Override public void onActivityResumed(Activity activity) { mCompat.onActivityResumed(activity); } @Override public void onActivityPaused(Activity activity) { mCompat.onActivityPaused(activity); } @Override public void onActivityStopped(Activity activity) { mCompat.onActivityStopped(activity); } @Override public void onActivitySaveInstanceState(Activity activity, Bundle outState) { mCompat.onActivitySaveInstanceState(activity, outState); } @Override public void onActivityDestroyed(Activity activity) { mCompat.onActivityDestroyed(activity); } } private static final Object LOCK = new Object(); private WeakReference<Application> mApplication; private Map<ActivityLifecycleCallbacks, Application.ActivityLifecycleCallbacks> mDelegates; public IceCreamSandwichActivityLifecycleCallbacksRegistry(Application application) { mApplication = new WeakReference<>(application); mDelegates = new HashMap<>(); } @Override public void registerActivityLifecycleCallbacks(ActivityLifecycleCallbacks callback) { final Application application = mApplication.get(); if (application == null) { return; } final Application.ActivityLifecycleCallbacks delegate = delegateOf(callback); application.registerActivityLifecycleCallbacks(delegate); } @Override public void unregisterActivityLifecycleCallbacks(ActivityLifecycleCallbacks callback) { final Application application = mApplication.get(); if (application == null) { return; } final Application.ActivityLifecycleCallbacks delegate = delegateOf(callback); application.unregisterActivityLifecycleCallbacks(delegate); } private Application.ActivityLifecycleCallbacks delegateOf(ActivityLifecycleCallbacks compat) { synchronized (LOCK) { if (mDelegates.containsKey(compat)) { return mDelegates.get(compat); } Application.ActivityLifecycleCallbacks delegate = new DelegatingActivityLifecycleCallbacks(compat); mDelegates.put(compat, delegate); return delegate; } } @Override public void dispatchActivityAttachBaseContext(Activity activity, Context newBase) { Object[] callbacks = mDelegates.keySet().toArray(); for (Object callback : callbacks) { ((ActivityLifecycleCallbacks) callback).onActivityAttachBaseContext(activity, newBase); } } @Override public void dispatchActivityAttachFragment(Activity activity, Fragment fragment) { Object[] callbacks = mDelegates.keySet().toArray(); for (Object callback : callbacks) { ((ActivityLifecycleCallbacks) callback).onActivityAttachFragment(activity, fragment); } } @Override public void dispatchActivityCreated(Activity activity, Bundle savedInstanceState) { // ICS??Application????????? } @Override public void dispatchActivityStarted(Activity activity) { // ICS??Application????????? } @Override public void dispatchActivityResumed(Activity activity) { // ICS??Application????????? } @Override public void dispatchActivityPaused(Activity activity) { // ICS??Application????????? } @Override public void dispatchActivityStopped(Activity activity) { // ICS??Application????????? } @Override public void dispatchActivitySaveInstanceState(Activity activity, Bundle outState) { // ICS??Application????????? } @Override public void dispatchActivityDestroyed(Activity activity) { // ICS??Application????????? } } public interface FragmentLifecycleCallbacks { void onFragmentCreated(Fragment fragment, Bundle savedInstanceState); void onFragmentStarted(Fragment fragment); void onFragmentResumed(Fragment fragment); void onFragmentPaused(Fragment fragment); void onFragmentStopped(Fragment fragment); void onFragmentSaveInstanceState(Fragment fragment, Bundle outState); void onFragmentDestroyed(Fragment fragment); void onFragmentAttach(Fragment fragment, Activity activity); void onFragmentDetach(Fragment fragment); void onFragmentActivityCreated(Fragment fragment, Bundle savedInstanceState); void onFragmentCreateView(Fragment fragment, LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState); void onFragmentViewCreated(Fragment fragment, View view, Bundle savedInstanceState); } interface FragmentLifecycleCallbacksRegistry { void registerFragmentLifecycleCallbacks(FragmentLifecycleCallbacks callback); void unregisterFragmentLifecycleCallbacks(FragmentLifecycleCallbacks callback); void dispatchFragmentCreated(Fragment fragment, Bundle savedInstanceState); void dispatchFragmentStarted(Fragment fragment); void dispatchFragmentResumed(Fragment fragment); void dispatchFragmentPaused(Fragment fragment); void dispatchFragmentStopped(Fragment fragment); void dispatchFragmentSaveInstanceState(Fragment fragment, Bundle outState); void dispatchFragmentDestroyed(Fragment fragment); void dispatchFragmentActivityCreated(Fragment fragment, Bundle savedInstanceState); void dispatchFragmentAttach(Fragment fragment, Activity activity); void dispatchFragmentDetach(Fragment fragment); void dispatchFragmentCreateView(Fragment fragment, LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState); void dispatchFragmentViewCreated(Fragment fragment, View view, Bundle savedInstanceState); } private static final class LegacyFragmentLifecycleCallbacksRegistry implements FragmentLifecycleCallbacksRegistry { private static final Object LOCK = new Object(); private WeakReference<Application> mApplication; private List<FragmentLifecycleCallbacks> mFragmentLifecycleCallbacks; public LegacyFragmentLifecycleCallbacksRegistry(Application application) { mApplication = new WeakReference<>(application); mFragmentLifecycleCallbacks = new ArrayList<>(); } @Override public void registerFragmentLifecycleCallbacks(FragmentLifecycleCallbacks callback) { final Application application = mApplication.get(); if (application == null) { return; } synchronized (LOCK) { mFragmentLifecycleCallbacks.add(callback); } } @Override public void unregisterFragmentLifecycleCallbacks(FragmentLifecycleCallbacks callback) { final Application application = mApplication.get(); if (application == null) { return; } synchronized (LOCK) { mFragmentLifecycleCallbacks.remove(callback); } } @Override public void dispatchFragmentActivityCreated(Fragment fragment, Bundle savedInstanceState) { Object[] callbacks = collectFragmentLifecycleCallbacks(); if (callbacks != null) { for (Object callback : callbacks) { ((FragmentLifecycleCallbacks) callback).onFragmentActivityCreated(fragment, savedInstanceState); } } } @Override public void dispatchFragmentAttach(Fragment fragment, Activity activity) { Object[] callbacks = collectFragmentLifecycleCallbacks(); if (callbacks != null) { for (Object callback : callbacks) { ((FragmentLifecycleCallbacks) callback).onFragmentAttach(fragment, activity); } } } @Override public void dispatchFragmentDetach(Fragment fragment) { Object[] callbacks = collectFragmentLifecycleCallbacks(); if (callbacks != null) { for (Object callback : callbacks) { ((FragmentLifecycleCallbacks) callback).onFragmentDetach(fragment); } } } @Override public void dispatchFragmentCreated(Fragment fragment, Bundle savedInstanceState) { Object[] callbacks = collectFragmentLifecycleCallbacks(); if (callbacks != null) { for (Object callback : callbacks) { ((FragmentLifecycleCallbacks) callback).onFragmentCreated(fragment, savedInstanceState); } } } @Override public void dispatchFragmentStarted(Fragment fragment) { Object[] callbacks = collectFragmentLifecycleCallbacks(); if (callbacks != null) { for (Object callback : callbacks) { ((FragmentLifecycleCallbacks) callback).onFragmentStarted(fragment); } } } @Override public void dispatchFragmentResumed(Fragment fragment) { Object[] callbacks = collectFragmentLifecycleCallbacks(); if (callbacks != null) { for (Object callback : callbacks) { ((FragmentLifecycleCallbacks) callback).onFragmentResumed(fragment); } } } @Override public void dispatchFragmentPaused(Fragment fragment) { Object[] callbacks = collectFragmentLifecycleCallbacks(); if (callbacks != null) { for (Object callback : callbacks) { ((FragmentLifecycleCallbacks) callback).onFragmentPaused(fragment); } } } @Override public void dispatchFragmentStopped(Fragment fragment) { Object[] callbacks = collectFragmentLifecycleCallbacks(); if (callbacks != null) { for (Object callback : callbacks) { ((FragmentLifecycleCallbacks) callback).onFragmentStopped(fragment); } } } @Override public void dispatchFragmentSaveInstanceState(Fragment fragment, Bundle outState) { Object[] callbacks = collectFragmentLifecycleCallbacks(); if (callbacks != null) { for (Object callback : callbacks) { ((FragmentLifecycleCallbacks) callback).onFragmentSaveInstanceState(fragment, outState); } } } @Override public void dispatchFragmentDestroyed(Fragment fragment) { Object[] callbacks = collectFragmentLifecycleCallbacks(); if (callbacks != null) { for (Object callback : callbacks) { ((FragmentLifecycleCallbacks) callback).onFragmentDestroyed(fragment); } } } @Override public void dispatchFragmentCreateView(Fragment fragment, LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { Object[] callbacks = collectFragmentLifecycleCallbacks(); if (callbacks != null) { for (Object callback : callbacks) { ((FragmentLifecycleCallbacks) callback).onFragmentCreateView(fragment, inflater, container, savedInstanceState); } } } @Override public void dispatchFragmentViewCreated(Fragment fragment, View view, Bundle savedInstanceState) { Object[] callbacks = collectFragmentLifecycleCallbacks(); if (callbacks != null) { for (Object callback : callbacks) { ((FragmentLifecycleCallbacks) callback).onFragmentViewCreated(fragment, view, savedInstanceState); } } } private Object[] collectFragmentLifecycleCallbacks() { Object[] callbacks = null; synchronized (LOCK) { if (mFragmentLifecycleCallbacks.size() > 0) { callbacks = mFragmentLifecycleCallbacks.toArray(); } } return callbacks; } } public interface ServiceLifecycleCallbacks { void onServiceAttachBaseContext(Service service, Context newBase); void onServiceCreated(Service service); } public static class SimpleServiceLifecycleCallbacks implements ServiceLifecycleCallbacks { @Override public void onServiceAttachBaseContext(Service service, Context newBase) { } @Override public void onServiceCreated(Service service) { } } interface ServiceLifecycleCallbacksRegistry { void registerServiceLifecycleCallbacks(ServiceLifecycleCallbacks callback); void unregisterServiceLifecycleCallbacks(ServiceLifecycleCallbacks callback); void dispatchServiceCreated(Service service); void dispatchServiceAttachBaseContext(Service service, Context newBase); } private static final class LegacyServiceLifecycleCallbacksRegistry implements ServiceLifecycleCallbacksRegistry { private static final Object LOCK = new Object(); private WeakReference<Application> mApplication; private List<ServiceLifecycleCallbacks> mServiceLifecycleCallbacks; public LegacyServiceLifecycleCallbacksRegistry(Application application) { mApplication = new WeakReference<>(application); mServiceLifecycleCallbacks = new ArrayList<>(); } @Override public void registerServiceLifecycleCallbacks(ServiceLifecycleCallbacks callback) { final Application application = mApplication.get(); if (application == null) { return; } synchronized (LOCK) { mServiceLifecycleCallbacks.add(callback); } } @Override public void unregisterServiceLifecycleCallbacks(ServiceLifecycleCallbacks callback) { final Application application = mApplication.get(); if (application == null) { return; } synchronized (LOCK) { mServiceLifecycleCallbacks.remove(callback); } } @Override public void dispatchServiceAttachBaseContext(Service service, Context newBase) { Object[] callbacks = collectServiceLifecycleCallbacks(); if (callbacks != null) { for (Object callback : callbacks) { ((ServiceLifecycleCallbacks) callback).onServiceAttachBaseContext(service, newBase); } } } @Override public void dispatchServiceCreated(Service service) { Object[] callbacks = collectServiceLifecycleCallbacks(); if (callbacks != null) { for (Object callback : callbacks) { ((ServiceLifecycleCallbacks) callback).onServiceCreated(service); } } } private Object[] collectServiceLifecycleCallbacks() { Object[] callbacks = null; synchronized (LOCK) { if (mServiceLifecycleCallbacks.size() > 0) { callbacks = mServiceLifecycleCallbacks.toArray(); } } return callbacks; } } private ActivityLifecycleCallbacksRegistry mActivityLifecycleCallbacksRegistry; private FragmentLifecycleCallbacksRegistry mFragmentLifecycleCallbacksRegistry; private ServiceLifecycleCallbacksRegistry mServiceLifecycleCallbacksRegistry; public LifecycleCallbacksSupportApplication() { setupActivityLifecycleCallbacksRegistry(); setupFragmentLifecycleCallbacksRegistry(); setupServiceLifecycleCallbacksRegistry(); } private void setupActivityLifecycleCallbacksRegistry() { if (introducedActivityLifecycleCallbacks()) { setupDelegatingActivityLifecycleCallbacks(); } else { setupCompatActivityLifecycleCallbacks(); } } private void setupFragmentLifecycleCallbacksRegistry() { setupCompatFragmentLifecycleCallbacks(); } private void setupServiceLifecycleCallbacksRegistry() { setupCompatServiceLifecycleCallbacks(); } private boolean introducedActivityLifecycleCallbacks() { try { Class.forName("android.app.Application$ActivityLifecycleCallbacks"); return true; } catch (ClassNotFoundException e) { // NOP } return false; } private void setupCompatActivityLifecycleCallbacks() { mActivityLifecycleCallbacksRegistry = new LegacyActivityLifecycleCallbacksRegistry(this); } private void setupDelegatingActivityLifecycleCallbacks() { mActivityLifecycleCallbacksRegistry = new IceCreamSandwichActivityLifecycleCallbacksRegistry(this); } private void setupCompatFragmentLifecycleCallbacks() { mFragmentLifecycleCallbacksRegistry = new LegacyFragmentLifecycleCallbacksRegistry(this); } private void setupCompatServiceLifecycleCallbacks() { mServiceLifecycleCallbacksRegistry = new LegacyServiceLifecycleCallbacksRegistry(this); } public void registerSupportActivityLifecycleCallbacks(ActivityLifecycleCallbacks callback) { mActivityLifecycleCallbacksRegistry.registerActivityLifecycleCallbacks(callback); } public void unregisterSupportActivityLifecycleCallbacksCompat(ActivityLifecycleCallbacks callback) { mActivityLifecycleCallbacksRegistry.unregisterActivityLifecycleCallbacks(callback); } void dispatchActivityAttachBaseContextCompat(Activity activity, Context newBase) { mActivityLifecycleCallbacksRegistry.dispatchActivityAttachBaseContext(activity, newBase); } void dispatchActivityCreatedCompat(Activity activity, Bundle savedInstanceState) { mActivityLifecycleCallbacksRegistry.dispatchActivityCreated(activity, savedInstanceState); } void dispatchActivityStartedCompat(Activity activity) { mActivityLifecycleCallbacksRegistry.dispatchActivityStarted(activity); } void dispatchActivityResumedCompat(Activity activity) { mActivityLifecycleCallbacksRegistry.dispatchActivityResumed(activity); } void dispatchActivityPausedCompat(Activity activity) { mActivityLifecycleCallbacksRegistry.dispatchActivityPaused(activity); } void dispatchActivityStoppedCompat(Activity activity) { mActivityLifecycleCallbacksRegistry.dispatchActivityStopped(activity); } void dispatchActivitySaveInstanceStateCompat(Activity activity, Bundle outState) { mActivityLifecycleCallbacksRegistry.dispatchActivitySaveInstanceState(activity, outState); } void dispatchActivityDestroyedCompat(Activity activity) { mActivityLifecycleCallbacksRegistry.dispatchActivityDestroyed(activity); } void dispatchActivityAttachFragmentCompat(Activity activity, Fragment fragment) { mActivityLifecycleCallbacksRegistry.dispatchActivityAttachFragment(activity, fragment); } public void registerSupportFragmentLifecycleCallbacks(FragmentLifecycleCallbacks callback) { mFragmentLifecycleCallbacksRegistry.registerFragmentLifecycleCallbacks(callback); } public void unregisterSupportFragmentLifecycleCallbacksCompat(FragmentLifecycleCallbacks callback) { mFragmentLifecycleCallbacksRegistry.unregisterFragmentLifecycleCallbacks(callback); } void dispatchFragmentActivityCreatedCompat(Fragment fragment, Bundle savedInstanceState) { mFragmentLifecycleCallbacksRegistry.dispatchFragmentActivityCreated(fragment, savedInstanceState); } void dispatchFragmentAttachCompat(Fragment fragment, Activity activity) { mFragmentLifecycleCallbacksRegistry.dispatchFragmentAttach(fragment, activity); } void dispatchFragmentDetachCompat(Fragment fragment) { mFragmentLifecycleCallbacksRegistry.dispatchFragmentDetach(fragment); } void dispatchFragmentCreatedCompat(Fragment fragment, Bundle savedInstanceState) { mFragmentLifecycleCallbacksRegistry.dispatchFragmentCreated(fragment, savedInstanceState); } void dispatchFragmentStartedCompat(Fragment fragment) { mFragmentLifecycleCallbacksRegistry.dispatchFragmentStarted(fragment); } void dispatchFragmentResumedCompat(Fragment fragment) { mFragmentLifecycleCallbacksRegistry.dispatchFragmentResumed(fragment); } void dispatchFragmentPausedCompat(Fragment fragment) { mFragmentLifecycleCallbacksRegistry.dispatchFragmentPaused(fragment); } void dispatchFragmentStoppedCompat(Fragment fragment) { mFragmentLifecycleCallbacksRegistry.dispatchFragmentStopped(fragment); } void dispatchFragmentSaveInstanceStateCompat(Fragment fragment, Bundle outState) { mFragmentLifecycleCallbacksRegistry.dispatchFragmentSaveInstanceState(fragment, outState); } void dispatchFragmentDestroyedCompat(Fragment fragment) { mFragmentLifecycleCallbacksRegistry.dispatchFragmentDestroyed(fragment); } void dispatchFragmentCreateView(Fragment fragment, LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { mFragmentLifecycleCallbacksRegistry.dispatchFragmentCreateView(fragment, inflater, container, savedInstanceState); } void dispatchFragmentViewCreated(Fragment fragment, View view, Bundle savedInstanceState) { mFragmentLifecycleCallbacksRegistry.dispatchFragmentViewCreated(fragment, view, savedInstanceState); } public void registerSupportServiceLifecycleCallbacks(ServiceLifecycleCallbacks callback) { mServiceLifecycleCallbacksRegistry.registerServiceLifecycleCallbacks(callback); } public void unregisterSupportServiceLifecycleCallbacksCompat(ServiceLifecycleCallbacks callback) { mServiceLifecycleCallbacksRegistry.unregisterServiceLifecycleCallbacks(callback); } void dispatchServiceAttachBaseContextCompat(Service service, Context newBase) { mServiceLifecycleCallbacksRegistry.dispatchServiceAttachBaseContext(service, newBase); } void dispatchServiceCreatedCompat(Service service) { mServiceLifecycleCallbacksRegistry.dispatchServiceCreated(service); } }