Java 安卓:执行排队第一次改装

Java 安卓:执行排队第一次改装,java,android,response,retrofit2,Java,Android,Response,Retrofit2,我在尝试执行此代码时遇到一些问题: @Override public void loginProcessGoogle(User googleUser) { Retrofit retrofit = new Retrofit.Builder() .baseUrl(Constants.BASE_URL) .callbackExecutor(Executors.newSingleThreadExecu

我在尝试执行此代码时遇到一些问题:

        @Override
    public void loginProcessGoogle(User googleUser) {
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(Constants.BASE_URL)
                .callbackExecutor(Executors.newSingleThreadExecutor())
                .addConverterFactory(GsonConverterFactory.create())
                .build();
        RequestInterface requestInterface = retrofit.create(RequestInterface.class);
        User user = new User();

        String email =  googleUser.getEmail() == null ? "" : googleUser.getEmail();

        String name = googleUser.getName();
        String googleId = googleUser.getProvider_id();

        user.setEmail(email);
        user.setName(name);
        user.setProvider_id(googleId);
        user.setProvider_name(User.provider_name_google);
        ServerRequest request = new ServerRequest();
        request.setUser(user);
        Call<ServerResponse> response = requestInterface.socialAuthenticate(request);

        response.enqueue(new Callback<ServerResponse>() {
            @Override
            public void onResponse(Call<ServerResponse> call, retrofit2.Response<ServerResponse> response) {

                ServerResponse resp = response.body();
                Snackbar.make(getView(), resp.getMessage(), Snackbar.LENGTH_LONG).show();

                if(resp.getResult().equals(Constants.SUCCESS)){
                    SharedPreferences.Editor editor = pref.edit();
                    editor.putBoolean(Constants.IS_LOGGED_IN,true);
                    editor.putString(Constants.EMAIL,resp.getUser().getEmail());
                    editor.putString(Constants.NAME,resp.getUser().getName());
                    editor.putString(Constants.ID,resp.getUser().getId());
                    editor.apply();
                    goToProfile();
                }
                progress.setVisibility(View.INVISIBLE);
            }

            @Override
            public void onFailure(Call<ServerResponse> call, Throwable t) {

                progress.setVisibility(View.INVISIBLE);
                Log.d(Constants.TAG,"failed");
                Snackbar.make(getView(), t.getLocalizedMessage(), Snackbar.LENGTH_LONG).show();

            }
        });
        String testString= "Hello";
    }
@覆盖
public void login进程google(用户googleUser){
改装改装=新改装.Builder()
.baseUrl(常量.BASE\u URL)
.callbackExecutor(Executors.newSingleThreadExecutor())
.addConverterFactory(GsonConverterFactory.create())
.build();
RequestInterface RequestInterface=reformation.create(RequestInterface.class);
用户=新用户();
字符串email=googleUser.getEmail()==null?”:googleUser.getEmail();
字符串名称=googleUser.getName();
字符串googleId=googleUser.getProvider_id();
user.setEmail(email);
user.setName(name);
user.setProvider_id(googleId);
user.setProvider\u name(user.provider\u name\u google);
ServerRequest=newserverrequest();
request.setUser(用户);
调用响应=requestInterface.socialAuthenticate(请求);
response.enqueue(新回调(){
@凌驾
公共void onResponse(呼叫,改装2.响应){
ServerResponse resp=response.body();
Snackbar.make(getView(),resp.getMessage(),Snackbar.LENGTH\u LONG.show();
if(resp.getResult().equals(Constants.SUCCESS)){
SharedReferences.Editor=pref.edit();
putBoolean(Constants.IS\u LOGGED\u IN,true);
putString(Constants.EMAIL,resp.getUser().getEmail());
putString(Constants.NAME,resp.getUser().getName());
putString(Constants.ID,resp.getUser().getId());
editor.apply();
goToProfile();
}
progress.setVisibility(View.INVISIBLE);
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
progress.setVisibility(View.INVISIBLE);
Log.d(Constants.TAG,“failed”);
make(getView(),t.getLocalizedMessage(),Snackbar.LENGTH_LONG).show();
}
});
String testString=“Hello”;
}
当我调试这段代码时,我在user.setEmail(email)中放置了一个断点,它在response.enqueue回调之前输入另一个。当我试图在onResponse方法中放置断点时,它会立即转到底部的字符串变量(testString
在底部的字符串变量之前,首先输入response.enqueue的最佳方式是什么,例如在ServerResponse resp=response.body()中

您不能,因为enqueue方法与您设置的线程一起在另一个线程中运行电子邮件,直到Refuntation收到它执行onResponse方法的结果。 你可以使用excute方法代替enque。请参阅此处了解更多详细信息