在给定的Android活动中,我想在某个时刻为用户启动一项新活动。一旦他们离开第一个活动并到达第二个活动,第一个活动就过时了,我想完全删除它,因此无法再从后退按钮访问它。
如何实现这一目标的最佳方法是什么?如何在用户启动新活动后立即杀死或销毁此活动?
答案 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)
您可以通过以下选项从特定任务的后台堆栈中删除活动。
像这样在 startActivity()
之后调用 startActivity(new Intent(FirstActivity.this, SecondActivity.class));
finish();
方法:
startActivity(new Intent(FirstActivity.this, SecondActivity.class).addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY));
像这样添加一个 Intent 标志:
noHistory=true
在您的清单文件中为该特定活动添加 @client.command()
async def suggest(ctx, message = None):
if message == None:
await ctx.send("Provide a suggestion")
else:
await ctx.{your_id}.send("message")