如果没有通过参数传递,则重写方法



我使用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参数。

您必须每次使用@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...
    }
}

相关内容

  • 没有找到相关文章

最新更新