Как выдвинуть на передний план задачу (содержащую конкретное действие), не переупорядочивая задачу? - PullRequest
0 голосов
/ 02 февраля 2019

Мне нужно поведение экрана последние: продолжить задачу именно там, где я остановился.

FLAG_ACTIVITY_NEW_TASK:

(...) если задача уже запущена для действия, которое вы сейчас запускаете, то новое действие не будет запущено;вместо этого текущее задание будет просто перенесено в переднюю часть экрана с состоянием, в котором оно было последним в (...)

Это выглядит многообещающе, но код ниже ведет себя как FLAG_ACTIVITY_CLEAR_TASK также был установлен.

Intent intent = new Intent();
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setClassName("com.example.app", "com.example.app.ExampleActivity");
startActivity(intent);

Неужели я неправильно понимаю FLAG_ACTIVITY_NEW_TASK?
Нужны ли дополнительные шаги для правильной работы?
На него влияет что-то еще, что я не могу контролировать?

Контекст

В моем приложении запуска есть кнопка для запуска TotalCommander.Допустим, я открываю TotalCommander, просматриваю свои каталоги и открываю произвольный текстовый файл, используя встроенный текстовый редактор TotalCommander.Если я прав, задача TotalCommander теперь имеет 2 действия: TotalCommander и TCEditActivity.Если я нажму кнопку «Домой», то увижу мое приложение запуска, и задача TotalCommander останется без изменений.Затем я делаю другие вещи в других приложениях, прежде чем вернуться к своей панели запуска, чтобы снова запустить TotalCommander.Это когда я хочу продолжить, где я остановился: редактирование случайного текстового файла в TCEditActivity.Я могу продолжить редактирование текста, только если долго удерживать кнопку «Домой», чтобы открыть экран последних, и выбрать единственную запись в TotalCommander.Но если я использую кнопку приложения запуска, вместо этого открывается TotalCommander, хотя мое намерение кажется правильным: FLAG_ACTIVITY_NEW_TASK установлено, но не вступает в силу.

Intent intent = new Intent();
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setClassName("com.ghisler.android.TotalCommander", "com.ghisler.android.TotalCommander.TotalCommander");
startActivity(intent);
...