如何在离开 Android 活动时关闭该活动,使其无法从后退按钮访问?

在给定的 Android 活动中,我希望在某个时刻为用户启动一个新活动。一旦他们离开第一个活动,到达第二个,第一个活动是陈旧的,我想完全删除它,所以它不能再次访问从后退按钮。

最好的方法是什么?如何在用户启动新活动后立即终止或销毁该活动?

209058 次浏览

你只需要打电话给 finish()

Intent intent = new Intent(this, NextActivity.class);
startActivity(intent);
finish();

在清单中的活动上设置 android:noHistory="true",将在任何时候从堆栈导航离开时从堆栈中删除活动。见 给你

是的,所有您需要做的就是在任何您想要关闭的活动中调用 Finish ()。

在你初始化你的新意图后,在每个“新活动”中写下这个->

Intent i = new Intent(this, yourClass.class);
startActivity(i);
finish();

你可使用:

intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);

也可以在 AndroidManifest.xml中将 android:noHistory="true"添加到 Activity标记中。

<activity
...
android:noHistory="true">
</activity>

将此属性添加到清单文件中的活动中。 机器人: noHistory = “ true”

终于,我有办法了!

我的上下文是 :-当活动被破坏时,我想断开套接字连接,我尝试了 完成了活动,但没有起作用,它保持连接活跃在某个地方。

所以我用 android.os.Process.killProcess(android.os.Process.myPid()); 它扼杀了我的活动,我使用 android:excludeFromRecents="true" 从最近的活动中删除。

您只需在启动新活动时使用以下代码。

startActivity(new Intent(this, newactivity.class));
finish();

在 Kotlin,你可以用这个

startActivity(Intent(context, newActivity::class.java))
finish()

或者你也可以用这个

val intent = Intent(context, newActivity::class.java))
startActivity(intent)
finish()

您可以使用以下选项从后台堆栈中删除特定任务的活动。

  1. startActivity()之后调用 finish()方法,如下所示:

         startActivity(new Intent(FirstActivity.this, SecondActivity.class));
    finish();
    
  2. 像这样添加一个意图标志:

         startActivity(new Intent(FirstActivity.this, SecondActivity.class).addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY));
    
  3. 在清单文件中为该特定活动添加 noHistory=true