java - 如何在Android编程中使用Volley并保持代码整洁? (回调问题)

标签 java android callback android-volley code-cleanup

现在我已经有了 Android 应用程序的工作代码。我使用 Volley,但是由于回调的原因,我觉得我的代码不够干净。

我的代码现在的两个功能是:

private void updateSettings() {
    ...
        HTTP.requestObject(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                try {
                    shiftStart = getHour(response.getString("shift_start"));
                    shiftEnd = getHour(response.getString("shift_end"));
                } catch (JSONException e) {
                    Log.i(MainActivity.TAG, "JSON parse error: " + e.toString());
                    e.printStackTrace();
                }

                startCall();
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                HTTP.handleError(error, getApplicationContext());
                startCall();
            }
        }, getApplicationContext());
    ...
}

private void startCall() {
    ...
    CallActivity.makeCall(getApplicationContext());
    ...
}

这里的重点是我想进行“调用”,这不是很重要,但在此之前我需要从服务器更新我的设置。当然,我需要在设置更新后进行调用,所以我从 Volley 回调开始调用(我使用 HTTP.requestObject,这是我制作的自定义类,但它只是将请求添加到请求中)队列并设置超时)。问题是,当您调用函数 updateSettings() 时,您并不真正期望启动“调用”或类似的内容。如何避免这种情况?

附注我不确定我是否清楚地解释了这个问题。如果您需要我澄清,请在下面询问。

最佳答案

如果该方法仅设计用于更新某些设置,那么是的,您应该对该方法强制执行单一责任原则,并且如果不打算这样做,则不要进行调用。

解决这个问题的方法本质上是复制 Volleys 回调参数模式。有一个 OnSettingsUpdatedListener 接口(interface),该接口(interface)将传递给更新设置的方法,然后调用那里的监听器的方法,该方法将路由回您调用它的位置,欢迎您调用电话管他呢。

关于java - 如何在Android编程中使用Volley并保持代码整洁? (回调问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37897229/

相关文章:

java - 如何在 LinearLayout 中将我的 ImageView 与我的 TextView 对齐?

android - 在android中设置listview滚动动画

c# - 从托管 C# 回调非托管代码

javascript - 已保存的 javascript facebook API 响应仍未定义?

java - 带有 bouncycaSTLe 库的 jar 文件 : NoClassDefFoundError

java - 如何将半透明 JWindow 上的鼠标事件传递到下面的 JFrame?

java - Eclipse 中的 Maven 集成 : Missing requirement

java - UiBinder 中的 GWT 动态复选框

android - Gradle 3.1.0 错误

javascript - JS : Higher Order Function Problem; Accept Array and Callback Function --> don't understand