【发布时间】:2011-08-31 15:39:28
【问题描述】:
我可以找到大量的教程来展示如何在简单案例中构建和使用 HttpClient。但是对于更复杂的案例,我找不到任何合适的文档。
在我的应用程序中,我有一堆活动,每个活动都必须能够使用 HTTPS 通过 POST 消息与远程 WebService 通信。我还要登录这个服务,所以我需要管理登录cookie。
目前,我在 .onStart() 中为每个 Activity 构造一个单独的 HttpClient,并在 .onStop() 中释放它。我有一个工作队列,其中包含描述必须与远程服务通信的任务的详细信息的对象。我使用单个工作人员 AsyncTask 执行这些任务。此解决方案似乎可行,但我不确定它是否是最佳解决方案。
我考虑过另外两种架构:
- 创建处理 HttpClient 的后台服务。这样我也许可以通过多个活动使用相同的实例,我想这会更好。但我不确定何时停止此服务并释放 HttpClient。
- 仅在需要时创建 HttpClient。因此,例如,当用户单击启动远程调用的按钮时,我构建客户端,设置 cookie 和 POST 消息,执行它,完成后我立即释放它。我认为这种方法非常糟糕,因为创建这样的客户端会产生开销(尤其是如果我使用 HTTPS)。
那么任何人对 HttpClient 的工作原理以及在 Android 中应该如何处理它有更深入的了解,您能否对这些方法发表评论/分享一些有用的提示?
谢谢
【问题讨论】:
-
首先,http 连接不应与任何活动相关,而应与服务相关
-
您是否有表明需要优化 HttpClient 创建的性能数据?两种解决方案都很好,但请记住 KISS 原则以及这些更改是否真的值得增加复杂性。
-
不,我没有测量这个。但是,我对更好的架构更感兴趣。因为现在看来我的应用程序正在运行,但可能是我在做一些根本上愚蠢的事情,并且有一种更清洁/更好的方法来完成这项任务。我还认为许多其他开发人员必须在更复杂的情况下使用 HttpClient,而我还没有找到一个可以彻底讨论这个问题的地方。
标签: android httpclient