私のAndroidアプリケーションでは、私はバックエンドからの読書の通路を得るための成功とエラーのコールバックを実装したいと思います。 iOS版では、それは次のようになります。Android - iOSブロックコールバックに相当するJava?
私Passage.hでは:私のPassage.mで
-(void)getPassagesWithSuccessCallback:(void (^)(NSArray<Passage *> *))success errorCallback:(void (^)(NSString *))errorString;
を:私のAndroidアプリで
-(void)getPassagesWithSuccessCallback:(void (^)(NSArray<Passage *> *))success errorCallback:(void (^)(NSString *))errorString {
MyApiInterface* api = [MyApiInterface sharedInstance];
[api sendGetRequestTo:@"passages" successCallback:[Passage modelListCallback:success] errorCallback:error];
}
、私はへ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