如果没有通过参数传递,则覆盖方法

时间:2015-09-15 08:03:11

标签: java android android-async-http

我正在使用library为Android在我的应用和我的网站之间进行HTTP通信。对于库,它允许您创建一个静态类,然后可以在整个应用程序中调用它。

当你调用静态类方法时会发生什么,基本上你只是将你的参数传递给它,其余的(显然)。其中一个参数是AsyncHttpResponseHandler,它允许您覆盖方法并处理其运行的AsyncTask的不同部分。

像这样:

类中的静态方法

public static void get(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
    client.get(getAbsoluteUrl(url, false), params, responseHandler);
}

然后在调用该方法时(例如):

TwitterRestClient.get("statuses/public_timeline.json", null, new JsonHttpResponseHandler() {
            @Override
            public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
                // If the response is JSONObject instead of expected JSONArray
            }

            @Override
            public void onSuccess(int statusCode, Header[] headers, JSONArray timeline) {
                // Pull out the first event on the public timeline
                JSONObject firstEvent = timeline.get(0);
                String tweetText = firstEvent.getString("text");

                // Do something with the response
                System.out.println(tweetText);
            }
        });

您可以覆盖的方法之一是onFailure()

我想知道的是,有没有办法可以为onFailure()覆盖设置'默认'?我希望每次调用get(url, params, responseHandler)方法时都设置相同,而不必每次都重新声明它,但我不知道有任何设置方法,同时仍考虑通过AsyncHttpResponseHandler论证。

1 个答案:

答案 0 :(得分:1)

每次必须@Override onFailure()告诉每个请求是否必须(或不)执行onFailure成功。

您可以做的是创建一个实用程序方法/类来处理所有onFailure()个请求。

示例:

TwitterRestClient.get("statuses/public_timeline.json", null, new JsonHttpResponseHandler() {
    // other methods overrides

    @Override
    public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
        FailureClass.handlerMethod(statusCode, headers, responseBody, error);
    }
}

class FailureClass {
    public static handlerMethod(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
        // do the common stuff, redirect or what you want...
    }
}