我是一名初级 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/