Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dd7dc052 authored by Steven Terrell's avatar Steven Terrell
Browse files

Add onActivityRestarted callback

This change adds the onActivityRestarted callback to the
ActivityLifecycleCallbacks interface.

Bug: 417520188
Test: atest CtsAppTestCases:ActivityCallbacksTest
Flag: android.app.on_restart_activity_lifecycle_callback
Change-Id: I60f9af43025bb4515f8ac926b996c650ef02b0ca
parent 1d67cbd7
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -5301,6 +5301,7 @@ package android.app {
    method public default void onActivityPreSaveInstanceState(@NonNull android.app.Activity, @NonNull android.os.Bundle);
    method public default void onActivityPreStarted(@NonNull android.app.Activity);
    method public default void onActivityPreStopped(@NonNull android.app.Activity);
    method @FlaggedApi("android.app.on_restart_activity_lifecycle_callback") public default void onActivityRestarted(@NonNull android.app.Activity);
    method public void onActivityResumed(@NonNull android.app.Activity);
    method public void onActivitySaveInstanceState(@NonNull android.app.Activity, @NonNull android.os.Bundle);
    method public void onActivityStarted(@NonNull android.app.Activity);
+15 −0
Original line number Diff line number Diff line
@@ -1806,6 +1806,19 @@ public class Activity extends ContextThemeWrapper
        }
    }

    private void dispatchActivityRestarted() {
        if (android.app.Flags.onRestartActivityLifecycleCallback()) {
            getApplication().dispatchActivityRestarted(this);
            Object[] callbacks = collectActivityLifecycleCallbacks();
            if (callbacks != null) {
                for (int i = callbacks.length - 1; i >= 0; i--) {
                    ((Application.ActivityLifecycleCallbacks) callbacks[i])
                            .onActivityRestarted(this);
                }
            }
        }
    }

    private Object[] collectActivityLifecycleCallbacks() {
        Object[] callbacks = null;
        synchronized (mActivityLifecycleCallbacks) {
@@ -2183,6 +2196,8 @@ public class Activity extends ContextThemeWrapper
    @CallSuper
    protected void onRestart() {
        mCalled = true;

        dispatchActivityRestarted();
    }

    /**
+18 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package android.app;

import android.annotation.CallSuper;
import android.annotation.FlaggedApi;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.compat.annotation.UnsupportedAppUsage;
@@ -213,6 +214,13 @@ public class Application extends ContextWrapper implements ComponentCallbacks2 {
         */
        default void onActivityConfigurationChanged(@NonNull Activity activity) {
        }

        /**
         * Called when the Activity calls {@link Activity#onRestart super.onRestart()}
         */
        @FlaggedApi(Flags.FLAG_ON_RESTART_ACTIVITY_LIFECYCLE_CALLBACK)
        default void onActivityRestarted(@NonNull Activity activity) {
        }
    }

    /**
@@ -579,6 +587,16 @@ public class Application extends ContextWrapper implements ComponentCallbacks2 {
        }
    }

    @FlaggedApi(Flags.FLAG_ON_RESTART_ACTIVITY_LIFECYCLE_CALLBACK)
    void dispatchActivityRestarted(@NonNull Activity activity) {
        Object[] callbacks = collectActivityLifecycleCallbacks();
        if (callbacks != null) {
            for (int i = 0; i < callbacks.length; i++) {
                ((ActivityLifecycleCallbacks) callbacks[i]).onActivityRestarted(activity);
            }
        }
    }

    @UnsupportedAppUsage
    private Object[] collectActivityLifecycleCallbacks() {
        Object[] callbacks = null;