说明: 我想在这里解释整个情况。我有API调用,它驻留在另一个类中(不在任何活动或片段上)。我试图使用该类的对象调用API调用方法。在那个时间点,我必须等到我的API响应未成功完成。在响应的基础上,我需要另外一个API,它位于同一个类中。
问题:
我正在使用AsyncHttpClient库来调用API。这是使用异步方法。如果我在调用其余部分期间在活动或片段中放置API调用,则尝试执行。但我想等到我的API成功响应我,然后我想执行一行代码。
问题:
我应该从这种情况中克服什么?我没有将API调用放在活动或片段中,因为实现策略不同。
请帮我解决这个问题。
答案 0 :(得分:0)
hii米兰,我建议使用https://github.com/koush/ion 库到你的项目它会比AsyncHttpClient
更好我认为您的问题将通过此库解决。
如果您想要提前休息,请使用retrofit库
答案 1 :(得分:0)
在这种情况下您可以使用接口:
onSuccess(String responseData)
和
onError(String errorData)
在您的活动或片段中实施界面。在API成功之后,在接口的onSuccess(String responseData)
方法中添加要执行的代码。同时处理onError(String errorData)
。
创建API类的对象时,会传递已实现的接口对它的引用,以便API类可以调用结果的接口方法。
此外,您可以使用任何第三方库进行此类工作,例如Retrofit,volley等。
我希望这可以帮到你。
答案 2 :(得分:0)
使用界面。这样您就可以创建自己的回调,其方法可以从onSuccess或onFailure调用。
8.X.X
并称之为:
public interface OnJSONResponseCallback {
public void onJSONResponse(boolean success, JSONObject response);
}
public JSONObject getJSONObj(OnJSONResponseCallback callback) {
...
@Override
public void onSuccess(int i, Header[] headers, String response) {
try {
jObj = new JSONObject(response);
callback.onJSONResponse(true, jObj);
} catch (JSONException e) {
Log.e("Exception", "JSONException " + e.toString());
}
}
@Override
public void onFailure(int statusCode, Header[] headers, String response, Throwable e) {
try {
jObj = new JSONObject(response);
callback.onJSONResponse(false, jObj);
} catch (JSONException e) {
Log.e("Exception", "JSONException " + e.toString());
}
}
}