// Signature format: 3.0
package androidx.activity {

  public class ComponentActivity extends androidx.core.app.ComponentActivity implements androidx.savedstate.bundle.BundleSavedStateRegistryOwner androidx.lifecycle.LifecycleOwner androidx.lifecycle.ViewModelStoreOwner {
    ctor public ComponentActivity();
    method public void addOnBackPressedCallback(androidx.activity.OnBackPressedCallback);
    method public void addOnBackPressedCallback(androidx.lifecycle.LifecycleOwner, androidx.activity.OnBackPressedCallback);
    method public final androidx.savedstate.SavedStateRegistry<android.os.Bundle> getBundleSavedStateRegistry();
    method @Deprecated public Object? getLastCustomNonConfigurationInstance();
    method public androidx.lifecycle.ViewModelStore getViewModelStore();
    method @Deprecated public Object? onRetainCustomNonConfigurationInstance();
    method public final Object? onRetainNonConfigurationInstance();
    method public void removeOnBackPressedCallback(androidx.activity.OnBackPressedCallback);
  }

  public interface OnBackPressedCallback {
    method public boolean handleOnBackPressed();
  }

}

