Я предполагаю, что Android не позволит людям делать это, потому что они считают, что у них идеальная ручка для задачи/приложений. Однако мне действительно нужно сделать это в моем случае.
У меня есть действие A, действующее как точка входа моего приложения. В этой деятельности он читает предпочтение и решает, какую деятельность начать, скажем, B или C. После этого он заканчивается. Таким образом, активность A никогда не появляется пользователям.
Мое приложение хранит вещи на SD-карте и постоянно читает ее. Таким образом, когда SD-карта размонтирована, мне нужно отобразить сообщение пользователю о том, что sdcard недоступен, вместо того, чтобы открывать B или C. Я установил проверку в A, чтобы отобразить это сообщение, когда SD-карта недоступна. Когда это сообщение отображается, A не будет пытаться запустить B или C.
Все работает отлично, если пользователь только вводит мое приложение из панели запуска приложений. Однако я обнаружил, что пользователь может также ввести мое приложение, долгое нажатие на дом и выбрать его из недавнего списка приложений, если он недавно открыл его. Когда пользователь делает это, он пропускает A и переходит непосредственно к B или C. У меня нет проверки в обоих из них, поэтому при попытке доступа к sdcard возникает исключение, а всплывающее диалоговое окно принудительного закрытия.
Я могу просто перенести свой чек на B и C, чтобы исправить эту проблему. Но в будущем количество мероприятий, начинающихся с A, будет увеличиваться. Если их 6, мне нужно скопировать эту проверку на 6 мест. Излишне говорить, что это выглядит очень уродливо, и это кошмар для обслуживания.
Итак, лучшим решением должно быть удаление моего приложения из списка последних приложений, когда sdcard унаследован. Однако я не могу найти, как это сделать. Даже убивая процесс или используя ActivityManager.restartPackage, он по-прежнему отображается в списке. Может ли кто-нибудь сказать мне, как удалить его из списка?
Ответ 1
попробовать
<activity android:name=".MainActivity"
android:excludeFromRecents="true" ...
в объявлении активности AndroidManifest.xml
.
Ответ 2
Другие атрибуты могут помочь вашей активности изолировать от других действий в одном пакете.
<activity
android:name=".aActivity"
android:excludeFromRecents="true"
android:taskAffinity=""
android:launchMode="singleInstance">
Ответ 3
просто добавьте android:excludeFromRecents="true"
в свой тег активности в файле манифеста.. легко:
Ответ 4
Вам нужно установить AndroidManifest.xml:
<activity>
...
android:excludeFromRecents="true"
...
</activity>
или начать эту операцию с
intent.setFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
а также в AndroidManifest.xml
<activity>
...
android:label=""
...
</activity>
Установка метки как пустой позволит этой активности НЕ отображаться в списке недавних приложений.
Ответ 5
Я бы не рекомендовал этого, но я бы попробовал следующие варианты:
Вариант 1:
В B и C добавьте:
protected void onPause() {
finish();
}
Вариант 2:
Добавьте в B и C следующее в AndroidManifest
:
android:noHistory= "true"
Ответ 6
Удаление приложения из списка последних приложений, вероятно, невозможно, и, безусловно, не лучшее решение. Это просто путает пользователя, который ожидает, что все приложения будут вести себя аналогичным образом.
Несмотря на это, я не думаю, что это решит вашу проблему. Если пользователь нажимает "Дом" во время действия "В", затем выбирает ваше приложение с домашней страницы, он снова запустит Activiy B.
Существует множество способов решения реальной проблемы. Одним из простых может быть создание базовой операции, которая выполняет проверку карты SD, и все ваши действия простираются от нее. Таким образом, проверка выполняется только в одном месте.
Ответ 7
Хорошо, я знаю, что это можно сделать в 2.3.4. Приложение Lock Toddler Lock при открытии очищает список последних приложений, поэтому, когда вы "блокируете" свой телефон, если вы долго нажимаете клавишу "домой", список пуст. К сожалению, я не нашел, как это сделать. Так что для тех, кто ищет и читает постф, которые говорят, что это невозможно, не сдавайтесь. Я, конечно, не знаю.
Ответ 8
если вы хотите выйти из приложения на кнопке, нажмите этот код:
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);
Чтобы убить полное приложение и удалить его из списка Runningapp, убейте приложение через его pid (его противный)... используйте эти строки перед кодом выше.
int pid = android.os.Process.myPid();
android.os.Process.killProcess(pid);