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