FLAG_ACTIVITY_NEW_TASK не работает должным образом - PullRequest
3 голосов
/ 03 августа 2011

У меня проблема с флагом FLAG_ACTIVITY_NEW_TASK при запуске нового действия.

В настоящее время у меня есть 2 приложения: приложение A содержит только сервис , который может запустить основную деятельность приложение B (приложение B имеет 1 действие, которое основная деятельность)

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

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

FLAG_ACTIVITY_NEW_TASK

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

Но по какой-то причине другое основное действие приложения B создано и запущено, поверх уже существующего, поэтому у меня есть 2 основных действия в задаче приложения B.

Основное действие НЕ имеет специальных атрибутов, установленных в манифесте, поэтому его атрибут launchMode автоматически устанавливается как стандартный.

Спасибо!

Ответы [ 2 ]

1 голос
/ 05 августа 2011

Вы пытались изменить режим запуска основного действия в приложении B на SingleTask или SingleInstance в приложении B AndroidManifest.xml?

См. Режим запуска для получения дополнительной информации.

0 голосов
/ 09 сентября 2015

Если действие уже открыто, будет вызван метод переопределения onNewIntent. Реализуйте метод на основе ваших требований. Моим требованием было поддерживать только одну задачу. поэтому я начинаю новую задачу и заканчиваю старую задачу. Реализуйте это в упражнении B

 @Override
 protected void onNewIntent(Intent intent) {
    startActivity(intent);
    finish();
 };
...