哪里是询问用户是否想要退出应用程序的好地方,当他们点击返回按钮时?我考虑了onPause
和onStop
,但这些方法会在应用程序被其他应用程序覆盖时触发。
更新: 应用程序还应该询问用户是否尝试从应用程序内的按钮退出应用程序,而不是后退硬按键。
哪里是询问用户是否想要退出应用程序的好地方,当他们点击返回按钮时?我考虑了onPause
和onStop
,但这些方法会在应用程序被其他应用程序覆盖时触发。
更新: 应用程序还应该询问用户是否尝试从应用程序内的按钮退出应用程序,而不是后退硬按键。
要求用户允许关闭应用程序。
你可以按照以下方式实现;
/**
* Exit the app if user select yes.
*/
private void doExit() {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(
AppDemoActivity.this);
alertDialog.setPositiveButton("Yes", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
alertDialog.setNegativeButton("No", null);
alertDialog.setMessage("Do you want to exit?");
alertDialog.setTitle("AppTitle");
alertDialog.show();
}
询问用户是否想退出应用程序的好地方是哪里?
既然您想在用户点击返回按钮时提示用户,建议您覆盖 onBackPressed()
方法并从那里调用上述方法。
@Override
public void onBackPressed() {
doExit();
}
正如@Martyn所建议的那样,您可以使用onKeyDown
来实现相同的功能;
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK) {
doExit();
}
return super.onKeyDown(keyCode, event);
}
应用程序还应该询问用户是否从应用程序本身的按钮退出应用程序,而不是使用返回硬键。
为此,可以从您的按钮的onClick中调用doExit()
。
Button exitButton = (Button)findViewById(R.id.exitButton);
exitButton.setOnClickListener(new android.view.View.OnClickListener() {
@Override
public void onClick(View v) {
doExit();
}
});
相关信息:
最好的位置在onBackPressed
中。唯一需要记住的是应用程序的行为“正常” - 也就是说,当用户按下返回键时,他们应该回到上一个屏幕 - 如果他们在主屏幕上按下返回键,则询问是否要退出应用程序是很好的。
文档中写道:
当活动检测到用户按下后退键时调用。默认实现仅完成当前活动,但您可以覆盖此行为以执行您想要的任何操作。
因此,如果捕获了后退键并且没有执行任何操作,则不会退出活动。如果您想退出,请使用finish()
。
这是一个相当老的问题,但它在谷歌上排名很高,所以我觉得它可能需要一个更新:
@Override
public void onBackPressed() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Do you want to exit the app?");
// if user presses "Exit", then he is allowed to exit from application
builder.setPositiveButton("Exit", (dialog, which) -> finish());
// if user selects "Stay", just cancel this dialog and continue with app
builder.setNegativeButton("Stay", (dialog, which) -> dialog.cancel());
builder.create().show();
}