代码在获取返回值之前执行

时间:2017-10-31 06:51:41

标签: android onesignal

我在检查一些函数返回值后尝试显示alertdialog。但是alertdialog代码总是在其他函数返回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();

        }
  

,功能是:

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之前等待执行功能。感谢

1 个答案:

答案 0 :(得分:0)

嗯,我对异步调用和回调并不多,我会学习它,但到目前为止我在其他地方调用了函数。

就像我放置

isServiceComplete()方法中的

OnCreate并将if条件更改为

if(!serviceComplete){...}

现在工作正常