1// Signature format: 2.0 2package com.android.server { 3 4 @FlaggedApi("android.crashrecovery.flags.enable_crashrecovery") public class PackageWatchdog { 5 method public void dump(@NonNull java.io.PrintWriter); 6 method @NonNull public static com.android.server.PackageWatchdog getInstance(@NonNull android.content.Context); 7 method public static boolean isRecoveryTriggeredReboot(); 8 method public void notifyPackageFailure(@NonNull java.util.List<android.content.pm.VersionedPackage>, int); 9 method public void registerHealthObserver(@NonNull com.android.server.PackageWatchdog.PackageHealthObserver, @NonNull java.util.concurrent.Executor); 10 method public void startExplicitHealthCheck(@NonNull com.android.server.PackageWatchdog.PackageHealthObserver, @NonNull java.util.List<java.lang.String>, long); 11 method public void unregisterHealthObserver(@NonNull com.android.server.PackageWatchdog.PackageHealthObserver); 12 field public static final int FAILURE_REASON_APP_CRASH = 3; // 0x3 13 field public static final int FAILURE_REASON_APP_NOT_RESPONDING = 4; // 0x4 14 field public static final int FAILURE_REASON_BOOT_LOOP = 5; // 0x5 15 field public static final int FAILURE_REASON_EXPLICIT_HEALTH_CHECK = 2; // 0x2 16 field public static final int FAILURE_REASON_NATIVE_CRASH = 1; // 0x1 17 field public static final int FAILURE_REASON_UNKNOWN = 0; // 0x0 18 field public static final int USER_IMPACT_THRESHOLD_HIGH = 71; // 0x47 19 field public static final int USER_IMPACT_THRESHOLD_MEDIUM = 20; // 0x14 20 field public static final int USER_IMPACT_THRESHOLD_NONE = 0; // 0x0 21 } 22 23 public static interface PackageWatchdog.PackageHealthObserver { 24 method @NonNull public String getUniqueIdentifier(); 25 method public default boolean isPersistent(); 26 method public default boolean mayObservePackage(@NonNull String); 27 method public default int onBootLoop(int); 28 method public default boolean onExecuteBootLoopMitigation(int); 29 method public boolean onExecuteHealthCheckMitigation(@Nullable android.content.pm.VersionedPackage, int, int); 30 method public int onHealthCheckFailed(@Nullable android.content.pm.VersionedPackage, int, int); 31 } 32 33} 34 35package com.android.server.rollback { 36 37 @FlaggedApi("android.crashrecovery.flags.enable_crashrecovery") public final class RollbackPackageHealthObserver implements com.android.server.PackageWatchdog.PackageHealthObserver { 38 ctor public RollbackPackageHealthObserver(@NonNull android.content.Context); 39 method @NonNull public String getUniqueIdentifier(); 40 method public boolean isPersistent(); 41 method public boolean mayObservePackage(@NonNull String); 42 method @AnyThread @NonNull public void notifyRollbackAvailable(@NonNull android.content.rollback.RollbackInfo); 43 method @AnyThread public void onBootCompletedAsync(); 44 method public int onBootLoop(int); 45 method public boolean onExecuteBootLoopMitigation(int); 46 method public boolean onExecuteHealthCheckMitigation(@Nullable android.content.pm.VersionedPackage, int, int); 47 method public int onHealthCheckFailed(@Nullable android.content.pm.VersionedPackage, int, int); 48 } 49 50} 51 52