Мне нужно поведение экрана последние: продолжить задачу именно там, где я остановился.
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);