Intereting Posts
Вызов класса обслуживания Один раз в день, когда приложение запускается в android, при меньшем потреблении батареи Сколько типов контекста в android и что лучше использовать FragmentManager.popBackStack () не просто загружает предыдущий фрагмент Android Camera Intent Сохранение ландшафта изображения при съемке Невозможно обновить представление, привязка данных не работает – Angularjs и PhoneGap Hybrid vs Native Mobile app ViewPager внутри строки ListView предотвращает запуск onItemClick Ошибка: выполнение выполнено для задачи, завершено с ненулевым значением выхода 1 Spannable для android для textView Практические показатели проектирования Android? Жизненный цикл андроида onActivityResult vs onStop Как удалить дублированный контакт из списка контактов в android Невозможно увидеть файл в Windows, написанный приложением android на SD-карте, если я не запустил приложение «Force Close» Как установить стиль текста кнопки в селекторах? Почему UiDevice # UIDevice для Android uChreenshot всегда возвращает false на эмуляторе

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();