Android: запуск приложения из «последних приложений» запускает его с помощью последнего набора дополнительных функций, используемых в намерении

Немного запутанной проблемы для меня здесь:

У меня есть виджет на главном экране, который при нажатии на него запускает мое основное приложение «Активность» с несколькими дополнительными функциями, заданными в намерении:

Intent start = new Intent(context, Main.class); start.putExtra("action", "showXYZ"); start.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(start); 

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

После того, как пользователь щелкнул виджет главного экрана и начал основную деятельность таким образом, входя в приложение с помощью метода «Недавние приложения» (удерживая «домашний» ключ) запускает основную деятельность с помощью дополнительных функций, что приводит к тому, что обработка Который я не хочу (и приводя к открытию второго действия, а не к тому, чтобы основная деятельность была показана).

Есть ли какая-нибудь работа для этого? При запуске приложения из метода «последние приложения» я хочу просто запустить основное действие без последнего набора дополнительных функций.

Большое спасибо за помощь! r3mo

Примечание: я нахожусь на android 1.5

РЕДАКТИРОВАТЬ:

Нашел обходной путь здесь: Android продолжает кэшировать мои намерения. Дополнительно, как объявить ожидающее намерение, которое содержит свежие дополнения?

Я собираюсь установить отметку времени, заданное виджетами, и проверить, что временная метка недавно появилась в Main.java. Если да, я продолжу обработку. Если нет, я просто покажу активность Main.java.

Стремитесь услышать, есть ли какие-либо официальные решения для этого.

Solutions Collecting From Web of "Android: запуск приложения из «последних приложений» запускает его с помощью последнего набора дополнительных функций, используемых в намерении"

Как говорит Martijn, вы можете проверить, открыто ли ваше приложение с использованием намерения с флагом FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY , например:

 int flags = getActivity().getIntent().getFlags(); if ((flags & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) != 0) { // The activity was launched from history } 

Я думаю, что вы можете отличить «обычный» запуск от запуска «последних приложений», проверив флаги Intent; Есть флаг, называемый

Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY

Который, согласно документации:

This flag is not normally set by application code, but set for you by the system if this activity is being launched from history (longpress home key).

Поэтому, когда этот флаг установлен, вы можете игнорировать дополнительные функции.

Вы должны очистить дополнительные функции от своих намерений после их использования.

 Bundle extras = getIntent().getExtras(); if (extras == null) { return; } String value1 = extras.getString("Value1"); String value2 = extras.getString("Value2"); extras.clear();