java - Android 截击 : Static vs Object

标签 java android static android-volley

我是一名初级 Android 开发人员,我几乎完成了我的第一个大项目的 alpha 版本。我认为我对 Java 有很好的了解,但我不确定我是否正确组织了我的应用程序。

简短描述:我在我的应用程序中使用 volley 库来从服务器发送和接收数据。因此,我创建了一个类来管理服务器方法。在该类中,我为我需要的每个服务器连接创建了很多静态方法(如本示例):

public static void sendDataToServer(final Context context, final String data) {
    StringRequest mStringRequest = new StringRequest(Request.Method.POST, URL_VERIFY, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            // get response
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
           // get error response
        }
    }) {
        @Override
        protected Map<String, String> getParams() {
            Map<String, String> params = new HashMap<>();
            // the POST parameters:
            params.put(API_KEY, API_KEY_VALUE);
            params.put(API_KEY_DATA, data);
            return params;
        }
    };

    Volley.newRequestQueue(context).add(mStringRequest);
}

因此,在我的 Activity 中,我将其称为 MyServerClass.sendDataToServer(...)

我的问题是:这样调用我的服务器方法可以吗?或者我应该让它们成为实例方法并在 Activity 启动时实例化 MyServerClass ?我必须提到,该类中有大约 5 个方法。

我有另一个类似的类,其中包含检查数据准确性的方法。我是否还应该将它们设为实例方法并在我需要的 Activity 中实例化它?

欢迎任何引用或建议。提前致谢!

最佳答案

不,在你的情况下,两种方式都会有相同的结果......

唯一要提到的是,如果您也需要接收对您的请求的响应(可能在将来),您将需要向您的类添加一个委托(delegate)/回调/接口(interface),以获得正确的结果回到您的调用 Activity 实例...在这种情况下,最好创建一个“非静态实例方法”方式...但是您也可以向您的类添加一个非静态方法,所以我看不到任何东西反对。

更新评论

例如,如果您想提供带有图像的 ListView...在大多数情况下,您首先请求带有 ListView 条目的 JSONArray,其中包含指向远程服务器上的位图的链接...

如果您下载异步图像并将它们放入 ListView 行中的 ImageView 中(当用户滚动时),则图像可能会加载更长的时间,并且 ListView 将在错误的位置显示图像...就像这样,您将需要一个单例模式,它将为您管理下载...这对于您的类/静态方法是不可能的

关于java - Android 截击 : Static vs Object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32551668/

相关文章:

Java Grect 和私有(private)静态错误

Java RegEx 全部替换以格式化 XML 中的数据

java - 在 Selenium 中使用带有水平滚动条的 WebTables

java - java中的十进制数字总和

android - Nativescript 应用程序不适用于 Android API 17

android - Android 中的交互式图像

javascript - 在不使用其名称的情况下引用静态方法内部的类

java - 在Android中,什么线程可运行传递给Executors.newSingleThreadScheduledExecutor运行?

android - 如何设置自定义 ListView 项目的高度...?

java - 重复的静态字段(数组与字符串)