2

我无法调用 AsyncTask 和 IntentService。我正在开发一个具有用户注册活动的 android 应用程序。当用户在注册活动中输入用户名时,我必须通过向服务器发送 HTTP 请求来检查用户名是否已被使用。服务器的响应是带有用户名的 JSON 对象。

请帮助我接听电话设计后台用户名检查 AsyncTask/IntentService 的优缺点。

4

3 回答 3

3

如果您使用的是 AsyncTask,那么您在这里不需要 IntentService。如果您发布代码,我们可以向您展示您可能做错了什么,但是使用 AsyncTask 在线程上发出 HTTP 请求非常简单。

这是一个很好的例子,说明如何为此目的使用它: http ://androidresearch.wordpress.com/2012/03/17/understanding-asynctask-once-and-forever/

基本上 AsyncTask 只是一个花哨的 Thread 包装器,它允许您与显示线程对话。Runnable您可以使用执行 HTTP 调用的 Thread 和更新您的显示的 Thread 可以实现完全相同的结果,您的线程可以使用Handler.

于 2013-07-25T08:17:30.743 回答
1

从这个有用的答案

您应该将 AsyncTask 用于与活动紧密绑定的简短重复任务,例如您当前正在尝试执行的操作。IntentService 更适合应在后台运行的计划任务(重复或不重复),与您的活动无关。

所以这个建议也适合你。

除此之外,我建议您查看android volley

于 2013-07-25T08:17:51.383 回答
1

IntentService 和 Asynctask 无论如何都没有可比性。

意向服务

  • Android 组件需要在 AndroidManifest 中注册。
  • 使用工作队列设计模式。多个请求放入队列并一一处理。
  • 使用自己的工作线程进行处理。
  • 异步:启动时,你发送和 Intent,Android 系统查询其本地系统以定位适当的服务组件。这意味着 IntentService 可能需要一段时间才能启动。
  • 它在 AndroidManifest 中注册,意味着启用权限后,其他应用将能够通过 Intent 访问它。
  • 上下文的子类

异步任务

  • 只是另一个花哨的java类
  • 必须从主线程创建和执行。
  • 使用后台线程进行操作。
  • 无法在其 java 范围之外访问。
  • 执行多次需要多个实例
  • 方便的设计模式来执行任何更新 UI 的后台任务
  • 您必须将上下文作为参数传递才能使用它,
  • 当用户调用 execute() 时开始执行。没有意图解析要求。
于 2015-02-09T05:54:34.493 回答