ActivityStackSupervisor.java revision 2219a1ba3d9f5c215be0eeb63fa8e8084da0f1ac
1270843072cff8cd35c517ec6009ccda3ba9668f8Craig Mautner/* 2270843072cff8cd35c517ec6009ccda3ba9668f8Craig Mautner * Copyright (C) 2013 The Android Open Source Project 3270843072cff8cd35c517ec6009ccda3ba9668f8Craig Mautner * 4270843072cff8cd35c517ec6009ccda3ba9668f8Craig Mautner * Licensed under the Apache License, Version 2.0 (the "License"); 5270843072cff8cd35c517ec6009ccda3ba9668f8Craig Mautner * you may not use this file except in compliance with the License. 6270843072cff8cd35c517ec6009ccda3ba9668f8Craig Mautner * You may obtain a copy of the License at 7270843072cff8cd35c517ec6009ccda3ba9668f8Craig Mautner * 8270843072cff8cd35c517ec6009ccda3ba9668f8Craig Mautner * http://www.apache.org/licenses/LICENSE-2.0 9270843072cff8cd35c517ec6009ccda3ba9668f8Craig Mautner * 10270843072cff8cd35c517ec6009ccda3ba9668f8Craig Mautner * Unless required by applicable law or agreed to in writing, software 11270843072cff8cd35c517ec6009ccda3ba9668f8Craig Mautner * distributed under the License is distributed on an "AS IS" BASIS, 12270843072cff8cd35c517ec6009ccda3ba9668f8Craig Mautner * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13270843072cff8cd35c517ec6009ccda3ba9668f8Craig Mautner * See the License for the specific language governing permissions and 14270843072cff8cd35c517ec6009ccda3ba9668f8Craig Mautner * limitations under the License. 15270843072cff8cd35c517ec6009ccda3ba9668f8Craig Mautner */ 16270843072cff8cd35c517ec6009ccda3ba9668f8Craig Mautner 17270843072cff8cd35c517ec6009ccda3ba9668f8Craig Mautnerpackage com.android.server.am; 18270843072cff8cd35c517ec6009ccda3ba9668f8Craig Mautner 192219a1ba3d9f5c215be0eeb63fa8e8084da0f1acCraig Mautnerimport android.content.Context; 202219a1ba3d9f5c215be0eeb63fa8e8084da0f1acCraig Mautnerimport android.content.Intent; 212219a1ba3d9f5c215be0eeb63fa8e8084da0f1acCraig Mautnerimport android.content.pm.ActivityInfo; 222219a1ba3d9f5c215be0eeb63fa8e8084da0f1acCraig Mautnerimport android.os.Looper; 232219a1ba3d9f5c215be0eeb63fa8e8084da0f1acCraig Mautner 24270843072cff8cd35c517ec6009ccda3ba9668f8Craig Mautnerimport java.io.PrintWriter; 252219a1ba3d9f5c215be0eeb63fa8e8084da0f1acCraig Mautnerimport java.util.ArrayList; 26270843072cff8cd35c517ec6009ccda3ba9668f8Craig Mautner 27270843072cff8cd35c517ec6009ccda3ba9668f8Craig Mautnerpublic class ActivityStackSupervisor { 282219a1ba3d9f5c215be0eeb63fa8e8084da0f1acCraig Mautner public static final int HOME_STACK_ID = 0; 29270843072cff8cd35c517ec6009ccda3ba9668f8Craig Mautner 30270843072cff8cd35c517ec6009ccda3ba9668f8Craig Mautner final ActivityManagerService mService; 312219a1ba3d9f5c215be0eeb63fa8e8084da0f1acCraig Mautner final Context mContext; 322219a1ba3d9f5c215be0eeb63fa8e8084da0f1acCraig Mautner final Looper mLooper; 33270843072cff8cd35c517ec6009ccda3ba9668f8Craig Mautner 34270843072cff8cd35c517ec6009ccda3ba9668f8Craig Mautner /** Dismiss the keyguard after the next activity is displayed? */ 35270843072cff8cd35c517ec6009ccda3ba9668f8Craig Mautner private boolean mDismissKeyguardOnNextActivity = false; 36270843072cff8cd35c517ec6009ccda3ba9668f8Craig Mautner 372219a1ba3d9f5c215be0eeb63fa8e8084da0f1acCraig Mautner private ActivityStack mHomeStack; 382219a1ba3d9f5c215be0eeb63fa8e8084da0f1acCraig Mautner private ActivityStack mMainStack; 392219a1ba3d9f5c215be0eeb63fa8e8084da0f1acCraig Mautner private ArrayList<ActivityStack> mStacks = new ArrayList<ActivityStack>(); 402219a1ba3d9f5c215be0eeb63fa8e8084da0f1acCraig Mautner 412219a1ba3d9f5c215be0eeb63fa8e8084da0f1acCraig Mautner public ActivityStackSupervisor(ActivityManagerService service, Context context, 422219a1ba3d9f5c215be0eeb63fa8e8084da0f1acCraig Mautner Looper looper) { 43270843072cff8cd35c517ec6009ccda3ba9668f8Craig Mautner mService = service; 442219a1ba3d9f5c215be0eeb63fa8e8084da0f1acCraig Mautner mContext = context; 452219a1ba3d9f5c215be0eeb63fa8e8084da0f1acCraig Mautner mLooper = looper; 462219a1ba3d9f5c215be0eeb63fa8e8084da0f1acCraig Mautner } 472219a1ba3d9f5c215be0eeb63fa8e8084da0f1acCraig Mautner 482219a1ba3d9f5c215be0eeb63fa8e8084da0f1acCraig Mautner void init() { 492219a1ba3d9f5c215be0eeb63fa8e8084da0f1acCraig Mautner mHomeStack = new ActivityStack(mService, mContext, mLooper, HOME_STACK_ID, this); 502219a1ba3d9f5c215be0eeb63fa8e8084da0f1acCraig Mautner setMainStack(mHomeStack); 512219a1ba3d9f5c215be0eeb63fa8e8084da0f1acCraig Mautner mService.mFocusedStack = mHomeStack; 52270843072cff8cd35c517ec6009ccda3ba9668f8Craig Mautner } 53270843072cff8cd35c517ec6009ccda3ba9668f8Craig Mautner 54270843072cff8cd35c517ec6009ccda3ba9668f8Craig Mautner void dismissKeyguard() { 55270843072cff8cd35c517ec6009ccda3ba9668f8Craig Mautner if (mDismissKeyguardOnNextActivity) { 56270843072cff8cd35c517ec6009ccda3ba9668f8Craig Mautner mDismissKeyguardOnNextActivity = false; 57270843072cff8cd35c517ec6009ccda3ba9668f8Craig Mautner mService.mWindowManager.dismissKeyguard(); 58270843072cff8cd35c517ec6009ccda3ba9668f8Craig Mautner } 59270843072cff8cd35c517ec6009ccda3ba9668f8Craig Mautner } 60270843072cff8cd35c517ec6009ccda3ba9668f8Craig Mautner 612219a1ba3d9f5c215be0eeb63fa8e8084da0f1acCraig Mautner boolean isMainStack(ActivityStack stack) { 622219a1ba3d9f5c215be0eeb63fa8e8084da0f1acCraig Mautner return stack == mMainStack; 632219a1ba3d9f5c215be0eeb63fa8e8084da0f1acCraig Mautner } 642219a1ba3d9f5c215be0eeb63fa8e8084da0f1acCraig Mautner 652219a1ba3d9f5c215be0eeb63fa8e8084da0f1acCraig Mautner void setMainStack(ActivityStack stack) { 662219a1ba3d9f5c215be0eeb63fa8e8084da0f1acCraig Mautner mMainStack = stack; 672219a1ba3d9f5c215be0eeb63fa8e8084da0f1acCraig Mautner } 682219a1ba3d9f5c215be0eeb63fa8e8084da0f1acCraig Mautner 69270843072cff8cd35c517ec6009ccda3ba9668f8Craig Mautner void setDismissKeyguard(boolean dismiss) { 70270843072cff8cd35c517ec6009ccda3ba9668f8Craig Mautner mDismissKeyguardOnNextActivity = dismiss; 71270843072cff8cd35c517ec6009ccda3ba9668f8Craig Mautner } 72270843072cff8cd35c517ec6009ccda3ba9668f8Craig Mautner 732219a1ba3d9f5c215be0eeb63fa8e8084da0f1acCraig Mautner void startHomeActivity(Intent intent, ActivityInfo aInfo) { 742219a1ba3d9f5c215be0eeb63fa8e8084da0f1acCraig Mautner mHomeStack.startActivityLocked(null, intent, null, aInfo, null, null, 0, 0, 0, null, 0, 752219a1ba3d9f5c215be0eeb63fa8e8084da0f1acCraig Mautner null, false, null); 762219a1ba3d9f5c215be0eeb63fa8e8084da0f1acCraig Mautner } 772219a1ba3d9f5c215be0eeb63fa8e8084da0f1acCraig Mautner 78270843072cff8cd35c517ec6009ccda3ba9668f8Craig Mautner public void dump(PrintWriter pw, String prefix) { 79270843072cff8cd35c517ec6009ccda3ba9668f8Craig Mautner pw.print(prefix); pw.print("mDismissKeyguardOnNextActivity:"); 80270843072cff8cd35c517ec6009ccda3ba9668f8Craig Mautner pw.println(mDismissKeyguardOnNextActivity); 81270843072cff8cd35c517ec6009ccda3ba9668f8Craig Mautner } 82270843072cff8cd35c517ec6009ccda3ba9668f8Craig Mautner} 83