在android中进行http调用的最佳做法是什么?

时间:2011-02-24 17:36:25

标签: android multithreading http

所以我需要进行一些http调用,这些调用返回包含单个或一组json对象的JSON响应。我有整个部分的执行http客户端调用和工作,它返回一个带有json响应的字符串。

所以我的问题是:调用异步的最佳方法是什么。我目前正在使用异步任务调用方法,该方法在后台方法中返回字符串,并通过另一个调用解析用于解析的静态方法解析字符串,该方法返回包含我发送到postExecute部分的所有数据的POJO根据结果​​将结果呈现给ui。这是一个好习惯还是有更好的方法?

我在考虑引入接口来提供数据,例如onSuccess listener和onFail Listener。那有什么建议吗?

谢谢。

3 个答案:

答案 0 :(得分:5)

  

所以我的问题是:调用异步的最佳方法是什么。我目前正在使用异步任务调用方法,该方法在后台方法中返回字符串,并通过另一个调用解析用于解析的静态方法解析字符串,该方法返回包含我发送到postExecute部分的所有数据的POJO根据结果​​将结果呈现给ui。这是一个好习惯还是有更好的方法?

IMO,如果AsyncTask符合您的需求,您应该使用它 - 它是专门为帮助您避免线程管理的痛苦而做的..执行..异步任务。

  

我在考虑引入接口来提供数据,例如onSuccess listener和onFail Listener。那有什么建议吗?

不太清楚你的意思,但当然,你想优雅地处理失败。实现此目的的一种方法是仅基于AsyncTask的返回值,但如果您有许多不同的可能失败方案,则使用侦听器/回调模式将它们分开绝对是一个有效的选项。我个人不是两个而是一个听众,就像这样:

interface MyHttpCallListener {
  public void onSuccess(MyResult returnVal);
  public void onFailure(MyError error);
}

对我来说似乎更干净。

  谢谢。

没问题。

答案 1 :(得分:3)

我喜欢将Intent Service API用于此类事情。好处是你在整个地方制作新的asynctasks,你可以将你的请求排到服务器。缺点是您一次只能发出一个请求。但我实际上更喜欢将它们排成一列并一次执行一次,所以这对我有好处。

答案 2 :(得分:1)

我建议使用Async Task。