检查上下文是否正在查看或焦点对准

时间:2019-07-19 05:51:54

标签: java android android-context

每当服务器或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),则由于调用它的上下文不在视图中,应用程序将崩溃。

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

1 个答案:

答案 0 :(得分:0)

您可以将上下文转换为活动,以检查活动是否完成,并且仅使用isFinishing()方法显示该活动是否完成

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