android - 从 IntentService 或 AsyncTask 调用 REST API?

标签 android android-asynctask intentservice

想象一个典型的场景,一个 Activity 打开,需要调用一个 REST HTTP API 来获取一些内容,并且一旦收到更新 UI。显然 API 调用需要在单独的线程上进行,但应该使用 AsyncTask、IntentService 还是其他方法来完成,为什么?

最佳答案

我会推荐 IntentServiceResultReceiver 的组合,如 this post 中所述。

还可以查看实现此模型的 Google iosched。 2010 版本展示了如何使用 onRetainNonConfigurationInstancegetLastNonConfigurationInstance 和静态类来保持 ResultReceiver 跨越配置更改(即屏幕旋转)。

我已经在一个应用程序中成功地实现了这个模型。如果您对所提供的链接有任何问题,请告诉我。

编辑:我忘记了“为什么”的问题;)

AsyncTask 与 Activity 紧密绑定(bind),它不能很好地处理配置更改。对于 Activity 生命周期内的短期任务(在 onResumeonPause 之间),这很好。我将 HttpClient 用于我的 REST API 调用,连接超时和套接字超时设置为 20 秒(由于移动网络不佳......)。这意味着 API 调用可以持续长达 40 秒。你肯定想在服务中处理这么长的任务,而不是 AsyncTask

关于android - 从 IntentService 或 AsyncTask 调用 REST API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7151285/

相关文章:

java - 在 Activity 类 com.example.ivy.bienesraicesapp.PanelUsuarioActivity 中找不到方法( View )

c# - 如何在 Xamarin forms Android 中设置 PageTiltle FontFamily 和 Size

android - 如果我只做 android 开发,使用 flutter 是个好主意吗?

android - 如何在单个进程中从 url 下载多个图像?

android - 服务+安卓 :process "vs" IntentService

python - 无法使用 NetMQ 在 Unity3d 和 Python 之间发送消息

java - 在 AsyncTask 中向 onPostExecute 发送参数

android - 在多个 Activity 中重用 Android AsnycTask 的模式?

Android,当应用程序打开时显示 alertDialog 而不是通知

android - 如何在 IntentService 中使用 WebView?