繁体   English   中英

为什么 java 编译器不按顺序(从上到下)编译代码?

[英]Why java compiler is not compiling code in sequence (top to bottom)?

String gst="123564";
int profile_status2;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_test2);

    fn();
    Toast.makeText(this, "Toast in onCreate method:  "+profile_status2, Toast.LENGTH_LONG).show();
}


private void fn() {
    setDataToDatabase tan = ServerConnection.doConnect();
    tan.profile_status(gst, new Callback<ServerResponse>() {
        @Override
        public void success(ServerResponse response, Response response2) {
            profile_status2 = Integer.parseInt(response.msg);
            Toast.makeText(test2.this, "toast in method: " + profile_status2, Toast.LENGTH_LONG).show();
              }

        @Override
        public void failure(RetrofitError error) {

        }
    });
}

构建应用程序后,我得到的结果是第一个 toast 来自 oncreate 方法,这意味着在 void 成功方法的 toast 之后可见。

这是因为Callback<ServerResponse>()中的代码异步运行,而Toast被称为同步; 您需要一个回调interface ,可以在请求完成时触发,以显示Toast

收到响应时触发成功方法中的 Toast。 显然,异步方法需要一些时间来调用并接收任何响应(也是错误); onCreate 方法中的 Toast 不需要时间来显示。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM