【问题标题】:How to use Volley in Android programming and keep code clean? (callback issues)如何在 Android 编程中使用 Volley 并保持代码干净? (回调问题)
【发布时间】:2016-06-18 12:58:25
【问题描述】:

现在我有我的 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() 时,您并不真正期望启动“调用”或类似的东西。如何避免这种情况?

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

【问题讨论】:

    标签: java android callback android-volley code-cleanup


    【解决方案1】:

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

    解决这个问题的方法基本上是复制 Volleys 回调参数模式。有一个OnSettingsUpdatedListener 接口,该接口将传递给用于更新设置的方法,然后调用那里的侦听器的方法,该方法将路由回您调用它的位置,欢迎您拨打电话或其他任何地方。

    【讨论】:

      猜你喜欢
      • 2014-11-23
      • 1970-01-01
      • 1970-01-01
      • 2010-09-16
      • 1970-01-01
      • 1970-01-01
      • 2012-09-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多