代码在获取 return 值之前执行

code executes before getting return value

我正在尝试在检查某些函数 return 值后显示警报对话框。但是 alertdialog 代码总是在其他函数 return true 之前执行。在调试时它运行完美。

if(!isServiceComplete()){
            AlertDialog.Builder builder = new AlertDialog.Builder(HomeActivity.this);
            builder.setMessage("Complete Service");
            builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int id) {
                    Intent positiveActivity = new Intent(getApplicationContext(),
                            ServiceActivity.class);
                    startActivity(positiveActivity);
                }
            });
            builder.show();

        }

and the function is:

public boolean isServiceComplete() {
    serviceComplete =  false;
    try {
        OneSignal.getTags(new OneSignal.GetTagsHandler() {
            @Override
            public void tagsAvailable(final JSONObject tags) {
                if (tags.has("status")) {
                    serviceComplete = true;
                } else {

                    serviceComplete = false;

                }
            }

        });
    } catch(Exception e) {
        e.printStackTrace();
    }

    return serviceComplete;
}

请告诉我如何在 alertdialog 之前等待功能的执行。谢谢

好吧,我不太喜欢异步调用和回调,我会学习它,但截至目前,我在 activity 的其他地方调用了函数。

就像我放置的那样

isServiceComplete()OnCreate 方法中并将 if 条件更改为

if(!serviceComplete){...}

现在工作正常