我该怎么用来在android中异步访问网络?

时间:2013-04-16 09:45:56

标签: android android-asynctask robospice

我在我的应用中实施了AsyncTask,遇到了IllegalArgumentException等异常。我问堆栈溢出问题有人说我不应该在应用程序中使用AsyncTask,原因如下。

  • AsyncTasks不遵循活动实例的生命周期
  • 内存泄漏问题
  • 您的任务进度将会丢失

我被推荐为Robospice并且还告诉我考虑这个帖子AsyncTask is not really the best tool to create network requests on Android. use RoboSpace

有人能告诉我异步使用接入网络的最佳选择吗?我应该使用AsyncTask或RoboSpice?

5 个答案:

答案 0 :(得分:3)

根据this guy at Google IO,使用AsyncTask进行联网不是最佳选择。他可能会给他的演讲带来烦人的情绪。居高临下的语气,但仍然有一些好处。

IMO要使用的主要库是android-async-httprobospice

免责声明:我还没有尝试过这两种方法。虽然我更喜欢android-async-http的API,但似乎Robospice最近开发并支持更好的库。

我最终可能会自己推广IntentService

答案 1 :(得分:1)

这是一个Android异步Http客户端库文件来完成这些工作。试一试。

http://loopj.com/android-async-http/

答案 2 :(得分:0)

我一直在为一些项目使用AsyncTasks,从来没有遇到过这个问题。然而正如Snicolas在那篇文章中所说,如果你使用AsyncTasks进行长时间运行操作(请注意粗体),可能会出现问题。

因此,如果您正在进行短操作,请尝试使用AsyncTasks,否则我会尝试使用Robospice。

答案 3 :(得分:0)

一个asyncTask实例只能使用一次,如果要执行第二个请求必须再次调用new()

答案 4 :(得分:0)

我在所有应用程序中使用AsyncTask。没问题。

片段中的示例 http://pastebin.com/EDZtKy3M

CustomTask的自定义实现的示例基础 http://pastebin.com/F18hRXr6