/* * Copyright (C) 2021 The Android Open Source Project * * 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 android.app; /** * Interface to control the ANR dialog within the activity manager * {@hide} */ public interface AnrController { /** * Returns the delay in milliseconds for an ANR dialog that is about to be shown for * {@code packageName} with {@code uid}. * * Implementations should only return a positive value if they actually expect the * {@code packageName} to be delayed due to them. * If there are multiple controllers registered, the controller with the max delay will * be selected and will receive an {@link #onAnrDelayStarted} callback at the start of the * delay and an {@link #onAnrDelayCompleted} at the end of the delay. */ long getAnrDelayMillis(String packageName, int uid); /** * Notifies the controller at the start of the ANR dialog delay for {@code packageName} with * {@code uid}. The controller can decide to show a progress UI after this notification. */ void onAnrDelayStarted(String packageName, int uid); /** * Notifies the controller at the end of the ANR dialog delay for {@code packageName} with * {@code uid}. * * @return whether the ANR dialog should be shown or cancelled. {@code true} if the * ANR dialog should be shown, {@code false} if it should be cancelled. */ boolean onAnrDelayCompleted(String packageName, int uid); }