我已经开发了许多发出 Web 服务请求的 Android 应用程序,总是使用以下方法:
在每个需要发出 Web 服务请求的活动中,我定义了一个AsyncTask
显示ProgressDialog
in的内部,在 中onPreExecute()
进行 Web 服务调用doInBackground
,并关闭 progressDialog 并从 更新 UI 中的结果onPostExecute()
。
我担心的是:有更好(更短)的方法吗?在每个活动中重复所有这些代码是否有意义?我一直在谷歌搜索,但我什么也没找到。
我的问题是:我不能定义一个回调接口吗?例如这个:
public interface RequestCallback {
public void onSuccess(Whatever whatever);
public void onError(ErrorCode errorCode, String message);
}
...然后定义一个外部类,例如AsyncRequest
,包装 AsyncTask 定义和 ProgressDialogshow()
和dismiss()
语句。因此,所有活动只需要实例化该类,并传入以下参数:
1)Web服务运行的方法
2) 一个包含该 Web 服务方法的所有参数的 Bundle
3) 一个 RequestCallback 实例(可能是一个匿名的内联实例,我可以从中更新 UI onSuccess()
)
4)活动的上下文(必须显示 ProgressDialog(),所以我仍然需要一种方法来防止配置更改异常等等......),
你觉得这是个好设计吗?它可以节省数百行代码......