在我的Android应用程序中,当我从后端读取段落时,我想实现成功和错误回调。在iOS中,它应该是这样的:Android - Java块等价的回调?
在我Passage.h:
-(void)getPassagesWithSuccessCallback:(void (^)(NSArray<Passage *> *))success errorCallback:(void (^)(NSString *))errorString;
在我Passage.m:
-(void)getPassagesWithSuccessCallback:(void (^)(NSArray<Passage *> *))success errorCallback:(void (^)(NSString *))errorString {
MyApiInterface* api = [MyApiInterface sharedInstance];
[api sendGetRequestTo:@"passages" successCallback:[Passage modelListCallback:success] errorCallback:error];
}
在我的Android应用程序,我使用Volley
到处理我的API请求,但我想通过使用带有public static void
方法的Passage.java类进一步封装此API接口。这样的事情:
public static void getPassagesForFirebaseUser(FirebaseUser user, Context context) {
final String url = URL_BASE + "/passages.json" + "?auth=" + user.getToken(false);
final JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
// convert JSON into ArrayList<Passage> object
// pass on this array of Passages in the success completion listener of the method that called this
// just like iOS does success(passages)
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// convert error to string
// pass on this errorString in the error completion listener of the method that called this
// just like iOS does error(errorString)
}
});
Volley.newRequestQueue(context).add(request);
}
有什么办法可以得到这种实现流程吗?
为您的回调定义一个接口,将其中的一个实例传递给'getPassagesForFirebaseUser()',并调用onResponse()和/或onErrorResponse()方法。 IOW,通过将'Response.Listener'和'Response.ErrorListener'的实例传递给'JsonObjectRequest'构造函数,您就可以完成Volley所要做的事情。 – CommonsWare
感谢CommonsWare。您的评论和Joa Barcena的回答非常有帮助! – Rafi