Android 从另一个活动中清除堆栈中的活动
我有启动屏幕,这是我在应用程序中的第一个活动 此活动仅包含一个按钮,单击该按钮时,应导航到另一个活动,该活动应提示用户输入名称 如果用户在确认名称之前按“后退”按钮,则应导航回上一个活动 但当用户确认名称时,应弹出主活动,并从应用程序中删除已放弃的活动 我正在寻找一个解决方案,并在创建静态活动对象时找到了它,但我发现这并不明智,而且对内存有害Android 从另一个活动中清除堆栈中的活动,android,android-activity,stack,Android,Android Activity,Stack,我有启动屏幕,这是我在应用程序中的第一个活动 此活动仅包含一个按钮,单击该按钮时,应导航到另一个活动,该活动应提示用户输入名称 如果用户在确认名称之前按“后退”按钮,则应导航回上一个活动 但当用户确认名称时,应弹出主活动,并从应用程序中删除已放弃的活动 我正在寻找一个解决方案,并在创建静态活动对象时找到了它,但我发现这并不明智,而且对内存有害 做我解释的事情的最佳方法是什么?您好,这可能会有帮助,请检查一下 在“用户名活动”中实现这一点 试试这个: 在哪个活动处执行此代码以清除其他堆栈活动 In
做我解释的事情的最佳方法是什么?您好,这可能会有帮助,请检查一下 在“用户名活动”中实现这一点 试试这个: 在哪个活动处执行此代码以清除其他堆栈活动
Intent intent = new Intent(this, newActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
this.startActivity(intent);
我希望这对您有所帮助第一个
活动
应该使用startActivityForResult()
调用第二个活动
。在第一个活动中
执行onActivityResult()
,如下所示:
- 如果
已取消resultCode
,则用户已单击后退键,因此无需执行任何操作RESULT\u
- 如果
是resultCode
,则用户输入其用户名,您可以启动主RESULT\u OK
并调用活动
。这将从堆栈中删除第一个finish()
活动
活动
应调用setResult(RESULT\u OK)
,然后在用户确认其用户名后调用finish()
。这将结束第二个活动
,并通过调用onActivityResult()
返回到第一个活动
注:
第二个
活动
可以将数据(如输入的用户名或任何内容)作为意图
中的“附加项”返回给第一个活动,并传递给setResult()
为什么不清理活动堆栈并启动一个新的main活动,如:?在实现时,在确认名称后,在加载mainActivity之前,我会在一秒钟内看到白色的scsreen。请在后台进程中运行此操作,使用clear stack activity的目的是什么-这取决于如何完成
Intent intent = new Intent(this, newActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
this.startActivity(intent);