RecentsActivity.java revision 6736905dc0e10689f7c63f6da43b31325caf966a
1303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung/*
2303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung * Copyright (C) 2014 The Android Open Source Project
3303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung *
4303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung * Licensed under the Apache License, Version 2.0 (the "License");
5303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung * you may not use this file except in compliance with the License.
6303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung * You may obtain a copy of the License at
7303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung *
8303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung *      http://www.apache.org/licenses/LICENSE-2.0
9303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung *
10303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung * Unless required by applicable law or agreed to in writing, software
11303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung * distributed under the License is distributed on an "AS IS" BASIS,
12303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung * See the License for the specific language governing permissions and
14303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung * limitations under the License.
15303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung */
16303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung
17303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chungpackage com.android.systemui.recents;
18303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung
19303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chungimport android.app.Activity;
2047c4c69575e94635a9356e8a1faf4b56a0120452Winson Chungimport android.content.BroadcastReceiver;
2147c4c69575e94635a9356e8a1faf4b56a0120452Winson Chungimport android.content.Context;
22303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chungimport android.content.Intent;
2347c4c69575e94635a9356e8a1faf4b56a0120452Winson Chungimport android.content.IntentFilter;
24303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chungimport android.os.Bundle;
25303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chungimport android.view.LayoutInflater;
26303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chungimport android.view.View;
27303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chungimport android.view.WindowManager;
28303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chungimport android.widget.FrameLayout;
2947c4c69575e94635a9356e8a1faf4b56a0120452Winson Chungimport com.android.systemui.R;
30303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chungimport com.android.systemui.recents.model.SpaceNode;
31303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chungimport com.android.systemui.recents.model.TaskStack;
32303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chungimport com.android.systemui.recents.views.RecentsView;
33303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung
34303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chungimport java.util.ArrayList;
35303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung
36303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung
37303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung/* Activity */
3847c4c69575e94635a9356e8a1faf4b56a0120452Winson Chungpublic class RecentsActivity extends Activity implements RecentsView.RecentsViewCallbacks {
39303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung    FrameLayout mContainerView;
40303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung    RecentsView mRecentsView;
41303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung    View mEmptyView;
4247c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung
43303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung    boolean mVisible;
4447c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung    boolean mTaskLaunched;
4547c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung
466736905dc0e10689f7c63f6da43b31325caf966aWinson Chung    // Broadcast receiver to handle messages from our RecentsService
4747c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung    BroadcastReceiver mServiceBroadcastReceiver = new BroadcastReceiver() {
4847c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung        @Override
4947c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung        public void onReceive(Context context, Intent intent) {
5047c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung            String action = intent.getAction();
5147c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung            Console.log(Constants.DebugFlags.App.SystemUIHandshake,
5247c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung                    "[RecentsActivity|serviceBroadcast]", action, Console.AnsiRed);
5347c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung            if (action.equals(RecentsService.ACTION_FINISH_RECENTS_ACTIVITY)) {
5447c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung                if (Constants.DebugFlags.App.EnableToggleNewRecentsActivity) {
5547c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung                    finish();
5647c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung                }
5747c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung            } else if (action.equals(RecentsService.ACTION_TOGGLE_RECENTS_ACTIVITY)) {
58c6a1623cc48581380b698ae87b43bfafb9c935baWinson Chung                // Try and unfilter and filtered stacks
59c6a1623cc48581380b698ae87b43bfafb9c935baWinson Chung                if (!mRecentsView.unfilterFilteredStacks()) {
60c6a1623cc48581380b698ae87b43bfafb9c935baWinson Chung                    // If there are no filtered stacks, dismiss recents and launch the first task
61c6a1623cc48581380b698ae87b43bfafb9c935baWinson Chung                    dismissRecentsIfVisible();
62c6a1623cc48581380b698ae87b43bfafb9c935baWinson Chung                }
6347c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung            }
6447c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung        }
6547c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung    };
66303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung
676736905dc0e10689f7c63f6da43b31325caf966aWinson Chung    // Broadcast receiver to handle messages from the system
686736905dc0e10689f7c63f6da43b31325caf966aWinson Chung    BroadcastReceiver mScreenOffReceiver = new BroadcastReceiver() {
696736905dc0e10689f7c63f6da43b31325caf966aWinson Chung        @Override
706736905dc0e10689f7c63f6da43b31325caf966aWinson Chung        public void onReceive(Context context, Intent intent) {
716736905dc0e10689f7c63f6da43b31325caf966aWinson Chung            finish();
726736905dc0e10689f7c63f6da43b31325caf966aWinson Chung        }
736736905dc0e10689f7c63f6da43b31325caf966aWinson Chung    };
746736905dc0e10689f7c63f6da43b31325caf966aWinson Chung
75303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung    /** Updates the set of recent tasks */
76303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung    void updateRecentsTasks() {
77303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung        RecentsTaskLoader loader = RecentsTaskLoader.getInstance();
78303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung        SpaceNode root = loader.reload(this, Constants.Values.RecentsTaskLoader.PreloadFirstTasksCount);
79303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung        ArrayList<TaskStack> stacks = root.getStacks();
80303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung        if (!stacks.isEmpty()) {
81303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung            mRecentsView.setBSP(root);
82303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung        }
83303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung
84303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung        // Add the default no-recents layout
85303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung        if (stacks.size() == 1 && stacks.get(0).getTaskCount() == 0) {
86303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung            mEmptyView.setVisibility(View.VISIBLE);
87303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung
88303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung            // Dim the background even more
89303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung            WindowManager.LayoutParams wlp = getWindow().getAttributes();
90303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung            wlp.dimAmount = Constants.Values.Window.DarkBackgroundDim;
91303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung            getWindow().setAttributes(wlp);
92303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung            getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
93303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung        } else {
94303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung            mEmptyView.setVisibility(View.GONE);
95303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung        }
96303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung    }
97303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung
98303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung    /** Dismisses recents if we are already visible and the intent is to toggle the recents view */
9947c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung    boolean dismissRecentsIfVisible() {
10047c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung        if (mVisible) {
10147c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung            if (!mRecentsView.launchFirstTask()) {
10247c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung                finish();
103303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung            }
10447c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung            return true;
105303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung        }
106303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung        return false;
107303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung    }
108303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung
109303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung    /** Called with the activity is first created. */
110303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung    @Override
111303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung    public void onCreate(Bundle savedInstanceState) {
112303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung        super.onCreate(savedInstanceState);
113303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung        Console.logDivider(Constants.DebugFlags.App.SystemUIHandshake);
114303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung        Console.log(Constants.DebugFlags.App.SystemUIHandshake, "[RecentsActivity|onCreate]",
115303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung                getIntent().getAction() + " visible: " + mVisible, Console.AnsiRed);
116bd91297e895410bb27df3e930be5d9eab30129afWinson Chung        Console.logTraceTime(Constants.DebugFlags.App.TimeRecentsStartup,
117bd91297e895410bb27df3e930be5d9eab30129afWinson Chung                Constants.DebugFlags.App.TimeRecentsStartupKey, "onCreate");
118303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung
119303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung        // Initialize the loader and the configuration
120303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung        RecentsTaskLoader.initialize(this);
121303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung        RecentsConfiguration.reinitialize(this);
122303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung
123303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung        // Create the view hierarchy
124303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung        mRecentsView = new RecentsView(this);
12547c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung        mRecentsView.setCallbacks(this);
126303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung        mRecentsView.setLayoutParams(new FrameLayout.LayoutParams(
127303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung                FrameLayout.LayoutParams.MATCH_PARENT,
128303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung                FrameLayout.LayoutParams.MATCH_PARENT));
129303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung
130303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung        // Create the empty view
131303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung        LayoutInflater inflater = LayoutInflater.from(this);
132303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung        mEmptyView = inflater.inflate(R.layout.recents_empty, mContainerView, false);
133303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung
134303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung        mContainerView = new FrameLayout(this);
135303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung        mContainerView.addView(mRecentsView);
136303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung        mContainerView.addView(mEmptyView);
137303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung        setContentView(mContainerView);
138303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung
139303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung        // Update the recent tasks
140303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung        updateRecentsTasks();
141303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung    }
142303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung
143303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung    @Override
144303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung    protected void onNewIntent(Intent intent) {
145303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung        super.onNewIntent(intent);
14647c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung        // Reset the task launched flag if we encounter an onNewIntent() before onStop()
14747c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung        mTaskLaunched = false;
14847c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung
149303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung        Console.logDivider(Constants.DebugFlags.App.SystemUIHandshake);
150303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung        Console.log(Constants.DebugFlags.App.SystemUIHandshake, "[RecentsActivity|onNewIntent]",
151303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung                intent.getAction() + " visible: " + mVisible, Console.AnsiRed);
152bd91297e895410bb27df3e930be5d9eab30129afWinson Chung        Console.logTraceTime(Constants.DebugFlags.App.TimeRecentsStartup,
153bd91297e895410bb27df3e930be5d9eab30129afWinson Chung                Constants.DebugFlags.App.TimeRecentsStartupKey, "onNewIntent");
154303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung
155303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung        // Initialize the loader and the configuration
156303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung        RecentsTaskLoader.initialize(this);
157303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung        RecentsConfiguration.reinitialize(this);
158303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung
159303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung        // Update the recent tasks
160303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung        updateRecentsTasks();
161303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung    }
162303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung
163303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung    @Override
164303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung    protected void onStart() {
165303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung        Console.log(Constants.DebugFlags.App.SystemUIHandshake, "[RecentsActivity|onStart]", "",
166303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung                Console.AnsiRed);
167303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung        super.onStart();
168303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung        mVisible = true;
169303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung    }
170303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung
171303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung    @Override
172303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung    protected void onResume() {
173303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung        Console.log(Constants.DebugFlags.App.SystemUIHandshake, "[RecentsActivity|onResume]", "",
174303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung                Console.AnsiRed);
175303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung        super.onResume();
1766736905dc0e10689f7c63f6da43b31325caf966aWinson Chung    }
1776736905dc0e10689f7c63f6da43b31325caf966aWinson Chung
1786736905dc0e10689f7c63f6da43b31325caf966aWinson Chung    @Override
1796736905dc0e10689f7c63f6da43b31325caf966aWinson Chung    public void onAttachedToWindow() {
1806736905dc0e10689f7c63f6da43b31325caf966aWinson Chung        Console.log(Constants.DebugFlags.App.SystemUIHandshake,
1816736905dc0e10689f7c63f6da43b31325caf966aWinson Chung                "[RecentsActivity|onAttachedToWindow]", "",
1826736905dc0e10689f7c63f6da43b31325caf966aWinson Chung                Console.AnsiRed);
1836736905dc0e10689f7c63f6da43b31325caf966aWinson Chung        super.onAttachedToWindow();
18447c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung
18547c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung        // Register the broadcast receiver to handle messages from our service
18647c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung        IntentFilter filter = new IntentFilter();
18747c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung        filter.addAction(RecentsService.ACTION_TOGGLE_RECENTS_ACTIVITY);
18847c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung        filter.addAction(RecentsService.ACTION_FINISH_RECENTS_ACTIVITY);
18947c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung        registerReceiver(mServiceBroadcastReceiver, filter);
1906736905dc0e10689f7c63f6da43b31325caf966aWinson Chung
1916736905dc0e10689f7c63f6da43b31325caf966aWinson Chung        // Register the broadcast receiver to handle messages when the screen is turned off
1926736905dc0e10689f7c63f6da43b31325caf966aWinson Chung        filter = new IntentFilter();
1936736905dc0e10689f7c63f6da43b31325caf966aWinson Chung        filter.addAction(Intent.ACTION_SCREEN_OFF);
1946736905dc0e10689f7c63f6da43b31325caf966aWinson Chung        registerReceiver(mScreenOffReceiver, filter);
195303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung    }
196303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung
197303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung    @Override
1986736905dc0e10689f7c63f6da43b31325caf966aWinson Chung    public void onDetachedFromWindow() {
1996736905dc0e10689f7c63f6da43b31325caf966aWinson Chung        Console.log(Constants.DebugFlags.App.SystemUIHandshake,
2006736905dc0e10689f7c63f6da43b31325caf966aWinson Chung                "[RecentsActivity|onDetachedFromWindow]", "",
201303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung                Console.AnsiRed);
2026736905dc0e10689f7c63f6da43b31325caf966aWinson Chung        super.onDetachedFromWindow();
203303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung
20447c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung        // Unregister any broadcast receivers we have registered
20547c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung        unregisterReceiver(mServiceBroadcastReceiver);
2066736905dc0e10689f7c63f6da43b31325caf966aWinson Chung        unregisterReceiver(mScreenOffReceiver);
2076736905dc0e10689f7c63f6da43b31325caf966aWinson Chung    }
2086736905dc0e10689f7c63f6da43b31325caf966aWinson Chung
2096736905dc0e10689f7c63f6da43b31325caf966aWinson Chung    @Override
2106736905dc0e10689f7c63f6da43b31325caf966aWinson Chung    protected void onPause() {
2116736905dc0e10689f7c63f6da43b31325caf966aWinson Chung        Console.log(Constants.DebugFlags.App.SystemUIHandshake, "[RecentsActivity|onPause]", "",
2126736905dc0e10689f7c63f6da43b31325caf966aWinson Chung                Console.AnsiRed);
2136736905dc0e10689f7c63f6da43b31325caf966aWinson Chung        super.onPause();
214303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung    }
215303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung
216303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung    @Override
217303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung    protected void onStop() {
218303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung        Console.log(Constants.DebugFlags.App.SystemUIHandshake, "[RecentsActivity|onStop]", "",
219303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung                Console.AnsiRed);
220303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung        super.onStop();
22147c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung
22247c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung        // Finish the current recents activity after we have launched a task
22347c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung        if (mTaskLaunched && Constants.DebugFlags.App.EnableToggleNewRecentsActivity) {
22447c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung            finish();
22547c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung        }
22647c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung
227303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung        mVisible = false;
22847c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung        mTaskLaunched = false;
22947c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung    }
23047c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung
23147c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung    @Override
23247c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung    protected void onDestroy() {
23347c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung        Console.log(Constants.DebugFlags.App.SystemUIHandshake, "[RecentsActivity|onDestroy]", "",
23447c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung                Console.AnsiRed);
23547c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung        super.onDestroy();
236303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung    }
237303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung
238303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung    @Override
2394d7b092a866d2fce3e11b5a12cda2b87a83af52dWinson Chung    public void onTrimMemory(int level) {
2404d7b092a866d2fce3e11b5a12cda2b87a83af52dWinson Chung        RecentsTaskLoader loader = RecentsTaskLoader.getInstance();
2414d7b092a866d2fce3e11b5a12cda2b87a83af52dWinson Chung        if (loader != null) {
2424d7b092a866d2fce3e11b5a12cda2b87a83af52dWinson Chung            loader.onTrimMemory(level);
2434d7b092a866d2fce3e11b5a12cda2b87a83af52dWinson Chung        }
2444d7b092a866d2fce3e11b5a12cda2b87a83af52dWinson Chung    }
2454d7b092a866d2fce3e11b5a12cda2b87a83af52dWinson Chung
2464d7b092a866d2fce3e11b5a12cda2b87a83af52dWinson Chung    @Override
247303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung    public void onBackPressed() {
248303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung        if (!mRecentsView.unfilterFilteredStacks()) {
249303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung            super.onBackPressed();
250303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung        }
251303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung    }
25247c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung
25347c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung    @Override
25447c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung    public void onTaskLaunching() {
25547c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung        mTaskLaunched = true;
25647c4c69575e94635a9356e8a1faf4b56a0120452Winson Chung    }
257303e1ff1fec8b240b587bb18b981247a99833aa8Winson Chung}
258