java - Android 上的回调函数

标签 java android callback android-volley

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

最佳答案

我这样做:将所有 Volley 调用放入从应用程序单例调用的 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);
                        }

                    }
            );

关于java - Android 上的回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28898327/

相关文章:

c++ - 在 openGL 中注册回调时出现编译错误

java - 线程中出现异常 "main"java.rmi.NotBoundException

java - 服务器重启期间的 Quartz 调度程序

java - RecyclerView 与 Firebase 搜索在搜索时显示所有产品

java - 由于无法在未调用 Looper.prepare() 的线程内创建处理程序而导致没有互联网连接时 Android 应用程序崩溃

javascript - 通过 Javascript 中的循环链接回调函数

java - Hibernate:必须在调用 save() 之前手动分配此类的 id

java - 如何从一个 fragment 获取值并将其传递给另一个 fragment

java - Retrofit 2 类文件问题

python - 在 Python 中实现回调 - 将可调用引用传递给当前函数