【问题标题】:what should I use to access network asynchronously in android?我应该在android中使用什么来异步访问网络?
【发布时间】:2013-04-16 09:45:56
【问题描述】:

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

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

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

谁能告诉我异步使用接入网络的最佳选择是什么?我应该使用AsyncTask 还是 RoboSpice?

【问题讨论】:

标签: android android-asynctask robospice


【解决方案1】:

根据this guy at Google IO,使用 AsyncTask 进行网络不是可行的方法。他可能会用令人讨厌和居高临下的语气进行演讲,但仍然有一些优点。

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

免责声明:我还没有尝试过其中任何一个。虽然我更喜欢 android-async-http 的 API,但似乎 Robospice 是最近开发的,并且支持更好的库。

我最终可能会推出自己的扩展 IntentService

【讨论】:

  • 感谢史蒂夫提供的信息。实际上我知道 robospice,但不知道如何使用它。
  • @Nilesh 是的,我认为开始使用它似乎有点沉重和混乱。如果我认为值得分享,我可以发布我的IntentService + ResultReceiver。敬请关注。 ;)
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    我已经在几个项目中使用了 AsyncTasks,但从未遇到过这样的问题。尽管如此,正如 Snicolas 在该帖子中所说,如果您将 AsyncTasks 用于 长时间运行 操作(请注意粗体字),则可能会出现问题。

    所以如果你做的是短的操作,试试 AsyncTasks,否则我会试试 Robospice。

    【讨论】:

    • 谢谢害羞。假设我有 multilistview,因为我在这种情况下从 REST Web 服务获取 200 条记录,我可以使用 Robospice 吗?
    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-28
        • 1970-01-01
        • 2017-03-05
        • 1970-01-01
        • 2020-12-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多