/* * Copyright (C) 2020 The Dagger Authors. * * 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 dagger.hilt.android; import android.app.Activity; import androidx.annotation.MainThread; import androidx.annotation.NonNull; /** * A ActivityRetainedLifecycle class is associated with the lifecycle of the {@link * dagger.hilt.android.components.ActivityRetainedComponent}. */ public interface ActivityRetainedLifecycle { /** * Adds a new {@link OnClearedListener} for receiving a callback when the activity retained * instances will no longer be needed and destroyed. * * @param listener The listener that should be added. */ @MainThread void addOnClearedListener(@NonNull OnClearedListener listener); /** * Removes a {@link OnClearedListener} previously added via {@link * #addOnClearedListener(OnClearedListener)}. * * @param listener The listener that should be removed. */ @MainThread void removeOnClearedListener(@NonNull OnClearedListener listener); /** * Listener for receiving a callback for when the {@link * dagger.hilt.android.components.ActivityRetainedComponent} will no longer be used and destroyed. */ interface OnClearedListener { /** * Called when the activity retained instances will no longer be used and destroyed. * *

Specifically this will be invoked during {@link Activity#onDestroy()} when {@link * Activity#isChangingConfigurations} is false. */ void onCleared(); } }