Подтвердить что ты не робот

Исключить текущую активность из последних задач

Мое приложение, работающее в фоновом режиме, в какой-то момент отображает активность для целенаправленного прерывания потока пользователей. Моя активность запускает новую задачу, которая появляется в списках "Новые задачи", находясь на переднем плане. Есть ли способ предотвратить это? Установка android:excludeFromRecents не работает - активность больше не отображается в "Recent Tasks" только после того, как была приостановлена.

Манифест выглядит так:

<activity
    android:name="com.example.recenttasks.MainActivity"
    android:excludeFromRecents="true">
</activity>

и деятельность начинается таким образом:

@Override
public void onReceive(Context context, Intent intent) {
    Intent i = new Intent(context, MainActivity.class);
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(i);
}
4b9b3361

Ответ 1

Главное, что вы упомянули, это

появляется в списках "Новые задачи", находясь на переднем плане

Я думаю, вы не можете изменить это поведение. Я просто тестировал свое приложение, и то же самое происходит. Если я нажимаю кнопку "Недавние задачи" при работе на переднем плане, она отображается там. В тот момент, когда я перейду из него в другую деятельность или на главный экран телефона, активность больше не указана.

Я также тестировал это на встроенном приложении DeskClock, которое поставляется с последними версиями Android, и такое же поведение присутствует там, когда срабатывает новый сигнал тревоги. Обратите внимание, что активность AlarmAlertFullscreen этого приложения имеет те же параметры, о которых вы говорили в своем вопросе.

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

Ответ 2

вы определили его в манифесте, которого достаточно, но он не наступает..

ok..try добавьте этот флаг также в свой Intnet и запустите Activity.

intnet.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);

Ответ 3

Должен ли пользователь вернуться к нему? (Смысл, если он показывает, и пользователь щелкает отступников, потерял ли они свой шанс увидеть скрытую активность или все еще там?)

Если они не могут вернуться к нему в любом случае, лучшим действием было бы finish() действие onPause(). Это будет означать, что до тех пор, пока вы использовали android:excludeFromRecents и android:noHistory="true", в android:noHistory="true" не будет элемента.

Если, однако, вы хотите вернуться к активности "прерывания" (но не хотите, чтобы запись возвращалась), вы могли бы рассмотреть возможность завершения операции onPause но также записать флаг preference (что-то вроде IS_INTERSTITIAL). Затем ваши другие действия могут проверить это предпочтение в onResume и если это true, отправьте Intent чтобы перезапустить Interstitial вместо этого. Для пользователя он просто появится, они возобновляют приложение в том же состоянии, в котором они покинули его (межстраничный)

Изменить. Если экран должен оставаться (а не быть повторно создан), возможно, будет возможно использовать DialogFragment, хотя тогда вы должны беспокоиться о изменениях конфигурации. Существует один взлом, который вы могли бы попробовать (объяснил в этом ответе) -

Установите свою метку пустым. Используя android:label="" ваша недавняя задача исключена. однако это определенный хак, который может привести к непоследовательным результатам (поскольку я не проверял его, чтобы быть уверенным)