【问题标题】:Callback function on AndroidAndroid上的回调函数
【发布时间】:2015-03-06 12:00:00
【问题描述】:

在 java 8 中有新的 Lambda 函数和方法引用。 android上有类似的东西吗?使用 volley 我需要传递一个回调函数来处理 onResponse,处理这个问题的最佳方法是什么?

【问题讨论】:

  • 据我所知,Android 不支持 java 8,所以你被匿名类卡住了!!
  • 那么怎么处理这个问题呢?我应该用回调方法编写一个回调类吗?

标签: java android callback android-volley


【解决方案1】:

我这样做是这样的:将所有凌空调用放在从应用程序单例调用的 api 文件中,

    public Request<?> getMessage(int messageId, boolean maxBodySize, Response.Listener<MessageData> responseListener, Response.ErrorListener errorListener) {

    String url = apiURL + MESSAGE + "?";
    int method = Request.Method.GET;
    GsonRequest<MessageData> request = new GsonRequest<MessageData>(
            method,
            url,
            MessageData.class,
            null,
            responseListener,
            errorListener,
            gson) {
        @Override
        public Map<String, String> getHeaders() {
            HashMap<String, String> headers = new HashMap<String, String>();
            headers.put("Accept", "application/json");
            return headers;
        }
    };

    request.setRetryPolicy(new DefaultRetryPolicy(
            SOCKET_TIMEOUT_MS,
            DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
            DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

    return mQueue.add(request);
}

从任何你想要的地方调用它:

    getApi().getMessage(messageNumber, true,
                    new Response.Listener<MessageData>() {
                        @Override
                        public void onResponse(MessageData data) {

                    },
                    new Response.ErrorListener() {
                        @Override
                        public void onErrorResponse(VolleyError error) {
                            resolveResponseStatus(error);
                        }

                    }
            );

【讨论】:

  • 太棒了,这看起来是个不错的方法
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-24
  • 2016-06-16
  • 1970-01-01
  • 2017-03-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多