Intereting Posts
Идентификатор фрагмента (#) в Uri не работает правильно Преобразование приложения Android в приложение Java Desktop OnActivityResult вызывается при запуске Activity, а не при его завершении Разность Hexcode между основным цветом и цветомPrimaryDark? I / art: Не удается найти класс: MapView (android maps api v2) внутри фрагмента макета не показывает Как установить цвет выделения для элемента ListView? Как работают кросс-платформенные платформы разработки мобильных приложений? Статистика для посещения моего приложения в магазине google play Eclipse: один проект PhoneGap для iPhone и Android? Java.io.FileNotFoundException при использовании RandomAccessFile для создания файла Фрагмент, сохраните большой список данных onSaveInstanceState (как предотвратить TransactionTooLargeException) ActivityUnitTestCase и startActivity с ActionBarActivity Как перевести код OpenCV-C ++, содержащий указатели, в JAVA? Почему android: singleLine = "true" делает ListView прокруткой очень лагги?

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