| /* |
| * Copyright (C) 2020 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. |
| */ |
| |
| syntax = "proto2"; |
| option java_multiple_files = true; |
| |
| package android.app; |
| |
| /** |
| * The reason code that why app process is killed. |
| */ |
| enum AppExitReasonCode { |
| /** |
| * Application process died due to unknown reason. |
| */ |
| REASON_UNKNOWN = 0; |
| |
| /** |
| * Application process exit normally by itself, for example, |
| * via {@link android.os.Process#exit}; {@link #status} will specify the exit code. |
| * |
| * <p>Applications should normally not do this, as the system has a better knowledge |
| * in terms of process management.</p> |
| */ |
| REASON_EXIT_SELF = 1; |
| |
| /** |
| * Application process died due to the result of an OS signal; for example, |
| * {@link android.os.Process#SIGNAL_KILL}; {@link #status} will specify the signum. |
| */ |
| REASON_SIGNALED = 2; |
| |
| /** |
| * Application process was killed by the system low memory killer, meaning the system was |
| * under memory pressure at the time of kill. |
| */ |
| REASON_LOW_MEMORY = 3; |
| |
| /** |
| * Application process died because of an unhandled exception in Java code. |
| */ |
| REASON_CRASH = 4; |
| |
| /** |
| * Application process died because it's crashed due to a native code crash. |
| */ |
| REASON_CRASH_NATIVE = 5; |
| |
| /** |
| * Application process was killed due to being unresponsive (ANR). |
| */ |
| REASON_ANR = 6; |
| |
| /** |
| * Application process was killed because it took too long to attach to the system |
| * during the start. |
| */ |
| REASON_INITIALIZATION_FAILURE = 7; |
| |
| /** |
| * Application process was killed because of initialization failure, |
| * for example, it took too long to attach to the system during the start, |
| * or there was an error during initialization. |
| */ |
| REASON_PERMISSION_CHANGE = 8; |
| |
| /** |
| * Application process was killed by the activity manager due to excessive resource usage. |
| */ |
| REASON_EXCESSIVE_RESOURCE_USAGE = 9; |
| |
| /** |
| * Application process was killed because of the user request, for example, |
| * user clicked the "Force stop" button of the application in the Settings, |
| * or swiped away the application from Recents. |
| */ |
| REASON_USER_REQUESTED = 10; |
| |
| /** |
| * Application process was killed, because the user they are running as on devices |
| * with mutlple users, was stopped. |
| */ |
| REASON_USER_STOPPED = 11; |
| |
| /** |
| * Application process was killed because its dependency was going away, for example, |
| * a stable content provider connection's client will be killed if the provider is killed. |
| */ |
| REASON_DEPENDENCY_DIED = 12; |
| |
| /** |
| * Application process was killed by the system for various other reasons, |
| * for example, the application package got disabled by the user; |
| * {@link #description} will specify the cause given by the system. |
| */ |
| REASON_OTHER = 13; |
| } |
| |
| /** |
| * The supplemental reason code that why app process is killed |
| */ |
| enum AppExitSubReasonCode { |
| /** |
| * Application process kills subReason is unknown. |
| */ |
| SUBREASON_UNKNOWN = 0; |
| |
| /** |
| * Application process was killed because user quit it on the "wait for debugger" dialog. |
| */ |
| SUBREASON_WAIT_FOR_DEBUGGER = 1; |
| |
| /** |
| * Application process was killed by the activity manager because there were too many cached |
| * processes. |
| */ |
| SUBREASON_TOO_MANY_CACHED = 2; |
| |
| /** |
| * Application process was killed by the activity manager because there were too many empty |
| * processes. |
| */ |
| SUBREASON_TOO_MANY_EMPTY = 3; |
| |
| /** |
| * Application process was killed by the activity manager because there were too many cached |
| * processes and this process had been in empty state for a long time. |
| */ |
| SUBREASON_TRIM_EMPTY = 4; |
| |
| /** |
| * Application process was killed by the activity manager because system was on |
| * memory pressure and this process took large amount of cached memory. |
| */ |
| SUBREASON_LARGE_CACHED = 5; |
| |
| /** |
| * Application process was killed by the activity manager because the system was on |
| * low memory pressure for a significant amount of time since last idle. |
| */ |
| SUBREASON_MEMORY_PRESSURE = 6; |
| |
| /** |
| * Application process was killed by the activity manager due to excessive CPU usage. |
| */ |
| SUBREASON_EXCESSIVE_CPU = 7; |
| |
| /** |
| * System update has done (so the system update process should be killed). |
| */ |
| SUBREASON_SYSTEM_UPDATE_DONE = 8; |
| |
| /** |
| * Kill all foreground services, for now it only occurs when enabling the quiet |
| * mode for the managed profile. |
| */ |
| SUBREASON_KILL_ALL_FG = 9; |
| |
| /** |
| * All background processes except certain ones were killed, for now it only occurs |
| * when the density of the default display is changed. |
| */ |
| SUBREASON_KILL_ALL_BG_EXCEPT = 10; |
| |
| /** |
| * The process associated with the UID was explicitly killed, for example, |
| * it could be because of permission changes. |
| */ |
| SUBREASON_KILL_UID = 11; |
| |
| /** |
| * The process was explicitly killed with its PID, typically because of |
| * the low memory for surfaces. |
| */ |
| SUBREASON_KILL_PID = 12; |
| |
| /** |
| * The start of the process was invalid. |
| */ |
| SUBREASON_INVALID_START = 13; |
| |
| /** |
| * The process was killed because it's in an invalid state, typically |
| * it's triggered from SHELL. |
| */ |
| SUBREASON_INVALID_STATE = 14; |
| |
| /** |
| * The process was killed when it's imperceptible to user, because it was |
| * in a bad state. |
| */ |
| SUBREASON_IMPERCEPTIBLE = 15; |
| |
| /** |
| * The process was killed because it's being moved out from LRU list. |
| */ |
| SUBREASON_REMOVE_LRU = 16; |
| |
| /** |
| * The process was killed because it's isolated and was in a cached state. |
| */ |
| SUBREASON_ISOLATED_NOT_NEEDED = 17; |
| } |
| |
| /** |
| * The relative importance level that the system places on a process. |
| * Keep sync with the definitions in |
| * {@link android.app.ActivityManager.RunningAppProcessInfo} |
| */ |
| enum Importance { |
| option allow_alias = true; |
| |
| IMPORTANCE_FOREGROUND = 100; |
| IMPORTANCE_FOREGROUND_SERVICE = 125; |
| IMPORTANCE_TOP_SLEEPING_PRE_28 = 150; |
| IMPORTANCE_VISIBLE = 200; |
| IMPORTANCE_PERCEPTIBLE_PRE_26 = 130; |
| IMPORTANCE_PERCEPTIBLE = 230; |
| IMPORTANCE_CANT_SAVE_STATE_PRE_26 = 170; |
| IMPORTANCE_SERVICE = 300; |
| IMPORTANCE_TOP_SLEEPING = 325; |
| IMPORTANCE_CANT_SAVE_STATE = 350; |
| IMPORTANCE_CACHED = 400; |
| IMPORTANCE_BACKGROUND = 400; |
| IMPORTANCE_EMPTY = 500; |
| IMPORTANCE_GONE = 1000; |
| } |