检查上下文是否正在查看或处于焦点中



>我有一个警报对话框,每当服务器或 API 有响应时,我都会显示该对话框。它看起来像这样:

public void showDeveloperDialog(Context context, String responseMessage) {
    AlertDialog.Builder alertDialog = new AlertDialog.Builder(context);
    alertDialog.setTitle("Response");
    alertDialog.setMessage(responseMessage);
    alertDialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.dismiss();
        }
    });
    alertDialog.setCancelable(false);
    alertDialog.show();
}

如果从示例活动 A 调用对话框,并且响应提示用户转到另一个活动(活动 B(时存在延迟,则应用将崩溃,因为调用它的上下文不在视图中。

如何检查以确保对话框仅在初始上下文在视图中时才显示?

您可以将上下文强制转换为活动以检查活动是否已完成,并且仅在未完成时才使用 isFinishing(( 方法显示

Activity activity = (Activity) context;
    if (!activity.isFinishing()) {
        // You can now display the dialog
        alertDialog.show();
    }

最新更新