Android中使用System.exit(0)退出后App又重新启动

System.exit(0):终止当前正在运行的 Java 虚拟机。参数用作状态码;根据惯例,非 0 的状态码表示异常终止。

System.exit(0)正常终止程序,有时候在退出安卓应用会使用到。

使用这个方法如果前面存在没有finish()掉的Activity会重新启动,导致退出失败。

MainActivity代码:

直接启动第二个Activity

@Override  
protected void onCreate(Bundle savedInstanceState) {  
    super.onCreate(savedInstanceState);  
    setContentView(R.layout.activity_main);  
    Intent intent=new Intent(MainActivity.this,NewActivity.class);  
    startActivity(intent);  
}

NewActivity代码:

public class NewActivity extends Activity {  
@Override  
protected void onCreate(Bundle savedInstanceState) {  
    super.onCreate(savedInstanceState);  
    Button button=new Button(NewActivity.this);  
    button.setText("退出测试");  
    button.setOnClickListener(new View.OnClickListener() {  
        @Override  
        public void onClick(View view) {  
            System.exit(0);  
        }  
    });  
    setContentView(button);  
 }  
}

此时点击button退出应用重启,修改MainActivity:启动新的Activity,finish存在MainAcitvity

@Override  
protected void onCreate(Bundle savedInstanceState) {  
    super.onCreate(savedInstanceState);  
    setContentView(R.layout.activity_main);  
    Intent intent=new Intent(MainActivity.this,NewActivity.class);  
    startActivity(intent);  
    this.finish();  
}
总结:

因为应用栈中还存在别的activity没有finish,导致应用重新启动。

使用System.exit(0)时,确保任务栈中所有activity已经finish。

参考链接


Android中使用System.exit(0)退出后app又重新启动

发布者

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注