gpt4 book ai didi

java - 从 Service 异步方法返回值到 Activity

转载 作者:行者123 更新时间:2023-11-30 10:49:33 25 4
gpt4 key购买 nike

我有一个服务类,我正在使用它来使用 Volley 进行 Web 服务调用:

public class AccountService {
public static void forgotPassword(Context c, String emailAddress) {

String url = "myUrl";

JsonArrayRequest request = new JsonArrayRequest(url,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
// done
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {

}
});

Volley.newRequestQueue(c).add(request);

}

}

我从这样的 Activity 中调用它:

public class ForgotPasswordActivity extends AppCompatActivity implements View.OnClickListener{

private void submit() {
accountService.forgotPassword();
}
}

当 Volley 请求完成后,我想更新我的 Activity 中的 UI。考虑到这是一个异步请求,我该怎么做?我可以在我的 Activity 中调用 AccountService 类的方法吗?感谢您的帮助

最佳答案

将监听器对象传递给 AccountService,然后将通信成功或错误发送给 Activity 。

按照下面的方法尝试(你不应该将布局传递给 AccountService,这会产生一些不必要的问题)

public class ForgotPasswordActivity extends AppCompatActivity 
implements View.OnClickListener,
AccountServiceCallback{

private void submit() {
AccountService.forgotPassword("email@123.com", this);
}


@Override
public void onClick(View v) {

}

@Override
public void onResponse(JSONArray response) {
// UPDATE UI as per on response requirement
}

@Override
public void onErrorResponse(VollyError error) {
// UPDATE UI as per response flow
}
}

public class AccountService {

public static void forgotPassword(Context c, String email, final
AccountServiceCallback callback) {

String url = "myUrl";

JsonArrayRequest request = new JsonArrayRequest(url,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
// done
callback.onResponse(response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
callback.onErrorResponse(error);
}
});

Volley.newRequestQueue(c).add(request);

}

interface AccountServiceCallback {
public void onResponse(JSONArray response);
public void onErrorResponse(VollyError error);
}
}

关于java - 从 Service 异步方法返回值到 Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35353655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com