输入活动时会调用onUserLeaveHint

时间:2017-06-23 21:01:53

标签: android

我正在创建一个分析音频的应用。当用户即将离开正在分析音频的活动时,我想创建一个对话框,询问用户是否想继续运行测试。我正在使用一个用户离开提示来执行此操作但是当我从主页面输入活动时它仍然被调用。我怎样才能解决这个问题。目前我只是在点击按钮时举杯。

@Override
    protected void onUserLeaveHint() {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setMessage("Continue running test?");
        AlertDialog dialog = builder.create();

        builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                int duration = Toast.LENGTH_LONG;
                Toast play = Toast.makeText(RecordAudio.this, "Continuing test", duration);
                play.show();
                finish();
            }
        });

        builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                int duration2 = Toast.LENGTH_SHORT;
                Toast stop = Toast.makeText(RecordAudio.this, "Ending test", duration2);
                stop.show();
                finish();
            }
        });
        builder.show();
    }

1 个答案:

答案 0 :(得分:1)

因为Android设备的HOME按钮(调用onUserLeaveHint())被设计为立即强制将用户带到设备的桌面/主屏幕,因此当您重新打开时,为什么对话框仍然存在该应用程序。也就是说,在将应用程序导出到主屏幕之前,与用户确认不是一个好习惯。

但是,我建议您在退出应用程序之前与用户确认时使用onBackPressed()(显然是对于BACK按钮)。