我在应用程序中创建了一个选项,如果用户单击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 );
} );
}
如何停止此自动启动?
谢谢
答案 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);