使用system.exit退出应用程序后,应用程序重新启动

时间:2020-10-09 15:31:21

标签: java android

我在应用程序中创建了一个选项,如果用户单击onBackPress,它将弹出一个对话框,询问他们是否确定要退出该应用程序。

一旦他们单击“确定”,我就喜欢它来关闭应用程序。

但是,现在它会关闭应用程序,然后重新启动它并再次返回到同一屏幕。

我正在使用:

public void popExitDialog(Context context) {

    final Dialog dialog = new Dialog( context );
    dialog.setContentView( R.layout.item_warn_exit );
    dialog.getWindow().setBackgroundDrawable( new ColorDrawable( Color.TRANSPARENT ) );

    Button Btn_Continue = dialog.findViewById( R.id.btn_Continue );
    Button Btn_Cancel = dialog.findViewById( R.id.btn_Cancel );
    ImageButton ib_CloseDialog = dialog.findViewById( R.id.ib_CloseDialog );

    dialog.show();

    ib_CloseDialog.setOnClickListener( v -> {
        dialog.dismiss();
    } );

    Btn_Cancel.setOnClickListener( view -> {
        dialog.dismiss();
    } );

    Btn_Continue.setOnClickListener( view -> {
        AppCompatActivity appCompatActivity = new AppCompatActivity();
        appCompatActivity.finishAndRemoveTask();
        appCompatActivity.finishAffinity();
        System.exit( 1 );
    } );
}

如何停止此自动启动?

谢谢

3 个答案:

答案 0 :(得分:0)

尝试System.exit(0)

exit(0):通常用于指示成功终止。 exit(1)或exit(-1)或任何其他非零值–通常表示终止失败。

尝试一下:Process.killProcess(Process.myPid());

答案 1 :(得分:0)

您需要在主要活动中致电finishAffinity()

您代码中的AppCompatActivity appCompatActivity = new AppCompatActivity();与您的任何活动都不相关。基本上,您只是在创建一个新的空活动对象,而该对象在您的应用程序中没有被引用。

如果您从主要活动中调用finishAffinity(),则该活动还将关闭Task Stack中位于其下方的所有其他活动。因此,您需要从您的电话中致电finishAffinity() MAIN(启动应用程序时正在运行的第一个活动)-(Activity) context 然后您可以尝试:

Btn_Continue.setOnClickListener( view -> {
    (Activity)your_context.finishAffinity();
    System.exit(0);
} );

请注意,这段代码可在Android 10上使用。我刚刚对其进行了测试。

答案 2 :(得分:0)

您能尝试我的代码吗,我还使用对话框退出了我的应用程序,它对我来说很好用。希望它会为你做

((Activity) context).finishAffinity();
                System.exit(0);