From c2dbc749428992dd416e9cf3664564b086b899f0 Mon Sep 17 00:00:00 2001 From: Steve McKay Date: Mon, 5 Oct 2015 12:32:46 -0700 Subject: [PATCH] Don't explicitly foreground tasks. Get out of the way of documentLaunchMode, let ActivityManager do the work for us. Quiet some noisy logging. Bug: 24413182 Change-Id: Ia48244871296f5c6b83a838dcde6496acbd45793 --- packages/DocumentsUI/AndroidManifest.xml | 1 - .../documentsui/DirectoryFragment.java | 2 +- .../android/documentsui/FilesActivity.java | 2 + .../documentsui/FilteringCursorWrapper.java | 5 +- .../android/documentsui/LauncherActivity.java | 47 ++++++++++++------- 5 files changed, 36 insertions(+), 21 deletions(-) diff --git a/packages/DocumentsUI/AndroidManifest.xml b/packages/DocumentsUI/AndroidManifest.xml index 295cb80ade520..7374445852961 100644 --- a/packages/DocumentsUI/AndroidManifest.xml +++ b/packages/DocumentsUI/AndroidManifest.xml @@ -3,7 +3,6 @@ - tasks = activities.getAppTasks(); - AppTask raiseTask = null; - for (AppTask task : tasks) { - Uri taskUri = task.getTaskInfo().baseIntent.getData(); - if (taskUri != null && isLaunchUri(taskUri)) { - raiseTask = task; - } - } - - if (raiseTask == null) { - launchFilesTask(); + Intent intent = findTask(activities); + if (intent != null) { + restoreTask(intent); } else { - raiseFilesTask(activities, raiseTask.getTaskInfo()); + startTask(); } finish(); } - private void launchFilesTask() { + private @Nullable Intent findTask(ActivityManager activities) { + List tasks = activities.getAppTasks(); + for (AppTask task : tasks) { + Intent intent = task.getTaskInfo().baseIntent; + Uri uri = intent.getData(); + if (isLaunchUri(uri)) { + return intent; + } + } + return null; + } + + private void startTask() { Intent intent = createLaunchIntent(this); + if (DEBUG) Log.d(TAG, "Starting new task > " + intent.getData()); startActivity(intent); } - private void raiseFilesTask(ActivityManager activities, RecentTaskInfo task) { - activities.moveTaskToFront(task.id, 0); + private void restoreTask(Intent intent) { + if (DEBUG) Log.d(TAG, "Restoring existing task > " + intent.getData()); + // TODO: This doesn't appear to restore a task once it has stopped running. + startActivity(intent); } static Intent createLaunchIntent(Context context) { @@ -88,6 +98,7 @@ public class LauncherActivity extends Activity { } static boolean isLaunchUri(@Nullable Uri uri) { - return uri != null && LAUNCH_CONTROL_AUTHORITY.equals(uri.getAuthority()); + boolean result = uri != null && LAUNCH_CONTROL_AUTHORITY.equals(uri.getAuthority()); + return result; } }