Мое приложение Android имеет тайм-аут неактивности. По истечении времени я возвращаю пользователя к экрану «Вход», который (всегда) находится в заднем стеке. Мой класс SignIn имеет android:launchMode="singleTop"
, поэтому экземпляр, работающий в backstack, всегда используется повторно.
Я запускаю это намерение по таймауту:
Intent inactivityTimeout = new Intent(this, SignIn.class);
inactivityTimeout.putExtra(INTENT_EXTRA_INACTIVITY_TIMEOUT, true);
int flags = inactivityTimeout.getFlags();
flags = flags|FLAG_FROM_BACKGROUND|Intent.FLAG_ACTIVITY_CLEAR_TOP;
inactivityTimeout.setFlags(flags);
Когда запускается экран входа в систему, он проверяет наличие INTENT_EXTRA_INACTIVITY_TIMEOUT
Intent extra. Если он найден, отображается диалоговое окно «Вы вышли из системы». Это все работает правильно.
Теперь я перейду к проблеме: поскольку она основана на таймере, это намерение может быть запущено независимо от того, находится ли мое приложение на переднем плане или в фоне. Это желательно, поскольку я не хотел бы, чтобы приложение оставалось в системе в течение неопределенного времени только потому, что оно находится в фоновом режиме.
Однако, когда приложение находится в фоновом режиме, а время таймера истекает, это намерение inactivityTimeout запускается, и приложение возвращается на передний план . Сейчас нет необходимости оповещать пользователя о том, что он истек, поэтому я бы предпочел, чтобы приложение оставалось в фоновом режиме, чтобы не прерывать текущее действие.
Я попытался добавить флаг FLAG_FROM_BACKGROUND
к своему намерению, но приложение все еще выводится на передний план. Я не уверен, что еще можно попробовать, или это проблема, которую я должен решить в своем намерении или в процессе получения.
Может кто-нибудь предложить способ реализовать это в моем намерении (или в ответном задании?). Или я что-то здесь упускаю? Спасибо!