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