| /* |
| * 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); |
| } |