2017-03-22 2 views
0

필자가 작성한 Android 앱에서 대부분의 앱에는 특정 API에 대한 웹 요청 수행이 포함됩니다. 데이터 형식이 동일 해지므로 모든 요청을 수행 할 때마다 매번 다시 작성하는 대신 많은 기능을 중앙 집중화하려고했습니다.콜백 함수 래핑

예를 들어, 나는 웹 요청을 할 때마다 루틴 검사 같은 오류 수행

JSONObject jo = new JSONObject(response); 
boolean success = jo.getBoolean("success"); 
if(success) { 
    //Do work 
} else { 
    //Display error 
} 

내 생각이 Response.Listener를 구현하는 클래스의 일종 만드는 것이 었습니다,하지만 난을 판별 할 수 없습니다 오류 등을 효과적으로 처리하는 방법. 제 질문은 입니다 콜백에서 반복 기능을 수행하는 쉬운 방법은 무엇입니까? 나는 우아한 솔루션을 찾고 있는데, 반드시 가장 쉬운 것은 아닙니다.

답변

1

하나 또는 두 개의 인터페이스를 메서드에 전달하면이 작업을 수행 할 수있어 번거 롭습니다. Java 8은 콜백 작업을 훨씬 더 우아하게 만드는 람다를 제공합니다. 안드로이드에서 람다를 사용하려면 retrolambda 사용할 수 있습니다 https://github.com/orfjackal/retrolambda

귀하의 일반적인 방법은 당신이 같은이 방법을 사용하는 것이이

parseResponse(String response, 
       Consumer<JSONObject> successConsumer, 
       Consumer<String> errorConsumer) { 
    JSONObject jo = new JSONObject(response); 
    boolean success = jo.getBoolean("success"); 
    if(success) { 
    successConsumer.accept(jo); 
    } else { 
    errorConsumer.accept("error"); 
    } 
} 

처럼 보일 수 :

class MyClass { 
    void onResponse(String response) { 
     .... 
     parseResponse(response, this::handleData, this::handleError); 
    } 

    void handleData(JSONObject object) {....} 
    void handleError(String object) {....} 

}