我有一项主要活动和第二项活动。在调用第二个活动时,我没有使用覆盖finish()
。我在第二个活动onClick
中有一个按钮,我需要杀死该应用程序。有没有办法在按钮点击时清除整个后栈?
答案 0 :(得分:0)
您可以在启动第二个活动时将标志添加到意图中。
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
答案 1 :(得分:0)
您无法通过Android设计杀死整个应用程序。 清除整个backstack的唯一方法是使用必需的标志启动新的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);
在此ThirdActivity中,在OnCreate()
方法中,只需调用finish();
你会得到什么结果?用户点击按钮后,整个应用程序将关闭,没有后台历史记录。
您还应该在清单android:noHistory="true"
中添加到此ThirdActivity,因此它也不会出现在历史记录中。
答案 2 :(得分:0)
您可以尝试退出按钮,
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);
}});}
答案 3 :(得分:0)
您也可以使用startActivityForResult检查Wetherby开始第二个活动。第一个活动也应该在完成第二个活动时完成