Android 从第二个活动中终止“后退”按钮上的应用程序
我有一个主要活动和第二个活动。调用第二个活动时,我没有使用覆盖Android 从第二个活动中终止“后退”按钮上的应用程序,android,kill,Android,Kill,我有一个主要活动和第二个活动。调用第二个活动时,我没有使用覆盖finish()。我在第二个activityonClick中有一个按钮,我需要终止该应用程序。是否有办法在单击按钮时清除整个后台堆栈?您可以在启动第二个活动时向intent添加标志 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 你不能用Android的设计杀死整个应用程序。 清除整个后退
finish()
。我在第二个activityonClick
中有一个按钮,我需要终止该应用程序。是否有办法在单击按钮时清除整个后台堆栈?您可以在启动第二个活动时向intent添加标志
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
你不能用Android的设计杀死整个应用程序。 清除整个后退的唯一方法是使用所需的标志开始新的活动 如果您只想在单击按钮时执行此操作,而不想在第二个活动开始时执行此操作,我认为这里只有一个解决方法 您应该在该按钮上单击call third activity(调用第三个活动)(空,只是存根),并带有所需的标志:
Intent intent = new Intent(this, MockActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); //clear backstack
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); //user will not notice activity appear, instead of default animation, which look like starting other app.
startActivity(intent);
在第三个活动中,在OnCreate()
方法中,只需调用finish()代码>
你会得到什么结果?用户点击按钮后,整个应用程序将被关闭,没有回退历史记录。
您还应该在Manifestandroid:noHistory=“true”
中添加此第三个活动,这样它也不会出现在历史记录中。您可以尝试退出按钮
addQuitButtonListener();
private void addQuitButtonListener(){
Button appbtn = (Button) findViewById(R.id.quit);
appbtn.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
System.exit(0);
}});}
您还可以使用startActivityForResult检查启动第二个活动,当您完成第二个活动时,是否也应完成第一个活动额外的finish()是不必要的,因为标志暗示了这一点。根据我的经验,在新活动开始之前显式退出当前活动,实际上会引入潜在的UI问题。思考图层-您希望确保新视图在旧视图消失之前出现。如果最后一个finish()在那里,你就失去了保证。在旧设备上,您可以期望在新视图出现之前看到Backback flash。示例:在新视图出现之前,主屏幕可能会闪烁1秒。谢谢,你说得对,我不确定是否要添加它。我已将其从代码中删除。您是否希望终止应用程序或活动?