[英]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.