Удалить приложение из последних приложений программно
Я знаю, что действия могут быть объявлены в манифесте как исключенные из recents с android:excludeFromRecents
:
http://developer.android.com/guide/topics/manifest/activity-element.html#exclude
Однако, это не то, что я ищу, я хотел бы знать, есть ли способ удалить приложение из последних приложений программно
Ответы
Ответ 1
Да, обычно, когда вы хотите иметь специальные свойства для Activity
при запуске, вы добавляете специальные флаги в Intent
. В этом случае FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
.
Обновлено:
Если вам нужно скрыть текущую текущую активность, вы можете использовать этот флаг в сочетании с FLAG_ACTIVITY_CLEAR_TOP, который отправит новое намерение в существующее действие. Вам придется подумать и, возможно, поэкспериментировать с тем, что происходит, когда пользователь перемещается вокруг вашего стека, и будет ли это делать ваше приложение снова появляться в последних приложениях.
Ответ 2
Я сделал это самым простым способом:
Добавить новую активность:
public class ExitActivity extends Activity
{
@Override protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
if(android.os.Build.VERSION.SDK_INT >= 21)
{
finishAndRemoveTask();
}
else
{
finish();
}
}
public static void exitApplicationAndRemoveFromRecent(Context context)
{
Intent intent = new Intent(context, ExitActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS | Intent.FLAG_ACTIVITY_NO_ANIMATION);
context.startActivity(intent);
}
}
Теперь выйти из другого действия:
@Override
public void onBackPressed() {
ExitActivity.exitApplicationAnRemoveFromRecent(OtherActivity.this);
super.onBackPressed();
}
Готово.
Ответ 3
Ниже приведено определение флага android:excludeFromRecents
(который я знаю, что вы уже видели):
Следует ли исключить задачу, инициированную этим действием, из списка недавно использованных приложений ( "последние приложения" ). То есть, когда эта деятельность является основной деятельностью новой задачи, это атрибут определяет, должна ли задача не отображаться в списке последние приложения. "true", если задача должна быть исключена из списка; "false", если он должен быть включен. Значение по умолчанию - "false".
чтобы удалить приложение из списка последних приложений, вы можете установить этот флаг при первом действии в вашем приложении, так как это действие запускает задачу для вашего приложения. Если у вас есть несколько задач (маловероятно для большинства приложений) в вашем приложении, вам нужно установить этот флаг для корневой активности всей задачи.
Ответ 4
Это можно сделать, используя функциональность ActivityManager.AppTask(начиная с API 21)
ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
if(am != null) {
List<ActivityManager.AppTask> tasks = am.getAppTasks();
if (tasks != null && tasks.size() > 0) {
tasks.get(0).setExcludeFromRecents(true);
}
}
Ответ 5
После получения других ответов мне удалось перейти к следующему обходному пути: у меня есть Activity
, пусть он вызывает XPTO, объявленный в манифесте с помощью
и в основном, когда я хочу, чтобы приложение исчезло из списка адресов, я завершаю все остальные действия, а затем запускаю XPTO, который в основном убивает приложение (вызов android.os.Process.killProcess(android.os.Process.myPid());
в onResume()
Если у кого-то есть лучший способ сделать это, поделитесь им.
Ответ 6
Добавьте эти строки в свою активность, поскольку они выходят из приложения.
@Override
public void finish() {
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
super.finishAndRemoveTask();
}
else {
super.finish();
}
}