ActivityManagerInternal.java revision fe762344f4475a3a336bb46aef2d59c1fabf32ab
1/* 2 * Copyright (C) 2014 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package android.app; 18 19import android.annotation.NonNull; 20import android.annotation.Nullable; 21import android.content.ComponentName; 22import android.content.IIntentSender; 23import android.content.Intent; 24import android.content.res.Configuration; 25import android.os.Bundle; 26import android.os.IBinder; 27import android.service.voice.IVoiceInteractionSession; 28 29import com.android.internal.app.IVoiceInteractor; 30 31import java.util.List; 32 33/** 34 * Activity manager local system service interface. 35 * 36 * @hide Only for use within the system server. 37 */ 38public abstract class ActivityManagerInternal { 39 40 /** 41 * Type for {@link #notifyAppTransitionStarting}: The transition was started because we had 42 * the surface saved. 43 */ 44 public static final int APP_TRANSITION_SAVED_SURFACE = 0; 45 46 /** 47 * Type for {@link #notifyAppTransitionStarting}: The transition was started because we drew 48 * the starting window. 49 */ 50 public static final int APP_TRANSITION_STARTING_WINDOW = 1; 51 52 /** 53 * Type for {@link #notifyAppTransitionStarting}: The transition was started because we all 54 * app windows were drawn 55 */ 56 public static final int APP_TRANSITION_WINDOWS_DRAWN = 2; 57 58 /** 59 * Type for {@link #notifyAppTransitionStarting}: The transition was started because of a 60 * timeout. 61 */ 62 public static final int APP_TRANSITION_TIMEOUT = 3; 63 64 // Called by the power manager. 65 public abstract void onWakefulnessChanged(int wakefulness); 66 67 public abstract int startIsolatedProcess(String entryPoint, String[] mainArgs, 68 String processName, String abiOverride, int uid, Runnable crashHandler); 69 70 /** 71 * Acquires a sleep token with the specified tag. 72 * 73 * @param tag A string identifying the purpose of the token (eg. "Dream"). 74 */ 75 public abstract SleepToken acquireSleepToken(@NonNull String tag); 76 77 /** 78 * Sleep tokens cause the activity manager to put the top activity to sleep. 79 * They are used by components such as dreams that may hide and block interaction 80 * with underlying activities. 81 */ 82 public static abstract class SleepToken { 83 84 /** 85 * Releases the sleep token. 86 */ 87 public abstract void release(); 88 } 89 90 /** 91 * Returns home activity for the specified user. 92 * 93 * @param userId ID of the user or {@link android.os.UserHandle#USER_ALL} 94 */ 95 public abstract ComponentName getHomeActivityForUser(int userId); 96 97 /** 98 * Called when a user has been deleted. This can happen during normal device usage 99 * or just at startup, when partially removed users are purged. Any state persisted by the 100 * ActivityManager should be purged now. 101 * 102 * @param userId The user being cleaned up. 103 */ 104 public abstract void onUserRemoved(int userId); 105 106 public abstract void onLocalVoiceInteractionStarted(IBinder callingActivity, 107 IVoiceInteractionSession mSession, 108 IVoiceInteractor mInteractor); 109 110 /** 111 * Callback for window manager to let activity manager know that the starting window has been 112 * drawn 113 */ 114 public abstract void notifyStartingWindowDrawn(); 115 116 /** 117 * Callback for window manager to let activity manager know that we are finally starting the 118 * app transition; 119 * 120 * @param reason The reason why the app transition started. Must be one of the APP_TRANSITION_* 121 * values. 122 */ 123 public abstract void notifyAppTransitionStarting(int reason); 124 125 /** 126 * Callback for window manager to let activity manager know that the app transition was 127 * cancelled. 128 */ 129 public abstract void notifyAppTransitionCancelled(); 130 131 /** 132 * Callback for window manager to let activity manager know that the app transition is finished. 133 */ 134 public abstract void notifyAppTransitionFinished(); 135 136 /** 137 * Returns the top activity from each of the currently visible stacks. The first entry will be 138 * the focused activity. 139 */ 140 public abstract List<IBinder> getTopVisibleActivities(); 141 142 /** 143 * Callback for window manager to let activity manager know that docked stack changes its 144 * minimized state. 145 */ 146 public abstract void notifyDockedStackMinimizedChanged(boolean minimized); 147 148 /** 149 * Kill foreground apps from the specified user. 150 */ 151 public abstract void killForegroundAppsForUser(int userHandle); 152 153 /** 154 * Sets how long a {@link PendingIntent} can be temporarily whitelist to by bypass restrictions 155 * such as Power Save mode. 156 */ 157 public abstract void setPendingIntentWhitelistDuration(IIntentSender target, long duration); 158 159 /** 160 * Updates and persists the {@link Configuration} for a given user. 161 * 162 * @param values the configuration to update 163 * @param userId the user to update the configuration for 164 */ 165 public abstract void updatePersistentConfigurationForUser(@NonNull Configuration values, 166 int userId); 167 168 /** 169 * Start activity {@code intents} as if {@code packageName} on user {@code userId} did it. 170 * 171 * @return error codes used by {@link IActivityManager#startActivity} and its siblings. 172 */ 173 public abstract int startActivitiesAsPackage(String packageName, 174 int userId, Intent[] intents, Bundle bOptions); 175 176 /** 177 * Get the procstate for the UID. The return value will be between 178 * {@link ActivityManager#MIN_PROCESS_STATE} and {@link ActivityManager#MAX_PROCESS_STATE}. 179 * Note if the UID doesn't exist, it'll return {@link ActivityManager#PROCESS_STATE_NONEXISTENT} 180 * (-1). 181 */ 182 public abstract int getUidProcessState(int uid); 183 184 /** 185 * Called when Keyguard flags might have changed. 186 * 187 * @param callback Callback to run after activity visibilities have been reevaluated. This can 188 * be used from window manager so that when the callback is called, it's 189 * guaranteed that all apps have their visibility updated accordingly. 190 */ 191 public abstract void notifyKeyguardFlagsChanged(@Nullable Runnable callback); 192} 193