我的应用程序具有以下流程:
首页->屏幕1->屏幕2->屏幕3->屏幕4->屏幕5>首页->屏幕2->首页->屏幕3
我的问题是,当我尝试关闭应用程序时,每次尝试关闭应用程序时都会打开 Home 活动。
当用户在主屏幕上按下设备的后退键时,我只想关闭应用程序。
我的应用程序具有以下流程:
首页->屏幕1->屏幕2->屏幕3->屏幕4->屏幕5>首页->屏幕2->首页->屏幕3
我的问题是,当我尝试关闭应用程序时,每次尝试关闭应用程序时都会打开 Home 活动。
当用户在主屏幕上按下设备的后退键时,我只想关闭应用程序。
有完成当前活动和所有父活动的finishAffinity()方法,但它仅适用于 Android 4.1 或更高版本。
这对我很有效。
你应该使用FLAG_ACTIVITY_CLEAR_TASK
和FLAG_ACTIVITY_NEW_TASK
标志。
Intent intent = new Intent(SecondActivity.this, CloseActivity.class);
//Clear all activities and start new task
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
onCreate()
活动方法CloseActivity
。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
finish(); // Exit
}
使用finishAffinity()
将完成当前活动和所有父活动的方法。但它仅适用于API 16+
平均 Android 4.1 或更高版本。
API 16+ 使用:
finishAffinity();
API 16 以下使用:
ActivityCompat.finishAffinity(this); //with v4 support library
要退出整个应用程序:
finishAffinity(); // Close all activites
System.exit(0); // Releasing resources
有时finish()
不工作
我已经解决了这个问题
finishAffinity()
不使用
System.exit(0);
它将在没有动画的情况下完成应用程序。
要在打开新活动时清除所有活动,请执行以下操作:
Intent intent = new Intent(getApplicationContext(), YourActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
添加android:noHistory="true"
您的活动清单文件。
您可以尝试使用 Intent.FLAG_ACTIVITY_CLEAR_TASK http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TASK启动屏幕 3
嗨,如果您在片段中并且无法按原样使用完成方法(因为完成应该解决您的问题),那么您可以使用getActivity.finish()
after 之后的方法startActivity(intent);
。如果您不在片段中,则可以在行finish()
后直接使用startActivity(intent);
有两种方法可以解决您的问题
1) 在每个活动的 startActivity(intent) 之后调用 finish()
2) 在清单文件的每个标签中设置 android:launchMode="singleInstance"
我认为第二种方法最适合解决问题,但您也可以使用第一种方法