我知道可以在清单中声明活动被排除在android:excludeFromRecents
的最近时间之外:
http://developer.android.com/guide/topics/manifest/activity-element.html#exclude
但是,这不是我想要的,我想知道是否有办法从最近的应用中删除应用以编程方式
答案 0 :(得分:36)
是的,通常当您希望在启动Activity
时拥有特殊属性时,您需要为Intent
提供特殊标记。在这种情况下FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
。
<强>更新强>
如果您需要隐藏当前已在运行的活动,您可以将此标记与FLAG_ACTIVITY_CLEAR_TOP
结合使用,这会将新的Intent发送到现有的Activity
。您将不得不考虑并尝试在用户在您的堆栈中移动时会发生什么,以及是否会使您的应用重新出现在最近的应用中。
答案 1 :(得分:30)
我以最简单的方式做到了:
添加新活动:
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.exitApplicationAndRemoveFromRecent(OtherActivity.this);
super.onBackPressed();
}
完成强>
答案 2 :(得分:13)
这可以使用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);
}
}
答案 3 :(得分:10)
以下是标志android:excludeFromRecents
的定义(我知道你已经看过):
是否应从最近使用的应用程序列表(“最近的应用程序”)中排除此活动启动的任务。 也就是说,当此活动是新任务的根活动时,这个 属性确定任务是否不应出现在列表中 最近的应用。如果任务应从列表中排除,则为“true”; “假”如果应该包括在内。默认值为“false”。
所以要从最近的应用程序列表中删除应用程序,您可以在应用程序的第一个活动上设置此标志,因为该活动会为您启动应用程序的任务。如果您的应用程序中有多个任务(大多数应用程序不太可能),那么您需要为所有任务的根活动设置此标志。
答案 4 :(得分:6)
将这些行添加到退出应用程序的Activity:
@Override
public void finish() {
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
super.finishAndRemoveTask();
}
else {
super.finish();
}
}
答案 5 :(得分:3)
在您的活动完成后调用此应该关闭,并且应该在完成任务的根活动时完全删除任务。
finishAndRemoveTask();
答案 6 :(得分:2)
在收到其他答案后,我设法得到以下解决方法:我有一个Activity
,我们称之为XPTO,在清单中声明
基本上,当我希望app从最近的列表中消失时,我完成所有其他活动,然后启动XPTO,这基本上会杀死应用程序(在android.os.Process.killProcess(android.os.Process.myPid());
如果有人有更好的方法,请分享