如何在离开时杀死Android活动,以便无法通过后退按钮访问它?

时间:2010-03-31 02:36:54

标签: android

在给定的Android活动中,我想在某个时刻为用户启动一项新活动。一旦他们离开第一个活动并到达第二个活动,第一个活动就过时了,我想完全删除它,因此无法再从后退按钮访问它。

如何实现这一目标的最佳方法是什么?如何在用户启动新活动后立即杀死或销毁此活动?

11 个答案:

答案 0 :(得分:214)

您只需致电finish()

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

答案 1 :(得分:98)

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

答案 2 :(得分:9)

你可以使用:

intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);

答案 3 :(得分:7)

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

答案 4 :(得分:4)

在初始化新意图后,在每个“新活动”中写下此内容>

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

答案 5 :(得分:4)

您还可以将android:noHistory="true"添加到Activity中的AndroidManifest.xml代码中。

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

答案 6 :(得分:1)

最后,我找到了解决方案!

我的上下文是:-当活动被破坏时,我想断开套接字连接,我尝试 finish()活动,但它对我没有用,它保持活动状态某个地方。

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

答案 7 :(得分:0)

将此属性添加到清单文件中的活动。 机器人:noHistory =&#34;真&#34;

答案 8 :(得分:0)

启动新活动时,只需使用以下代码即可。

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

答案 9 :(得分:0)

在 Kotlin 中,你可以使用这个

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

或者你也可以使用这个

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

答案 10 :(得分:0)

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

  1. 像这样在 startActivity() 之后调用 startActivity(new Intent(FirstActivity.this, SecondActivity.class)); finish(); 方法:

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

    noHistory=true
  3. 在您的清单文件中为该特定活动添加 @client.command() async def suggest(ctx, message = None): if message == None: await ctx.send("Provide a suggestion") else: await ctx.{your_id}.send("message")