Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java AyncTask和IntentService何时使用?_Java_Android - Fatal编程技术网

Java AyncTask和IntentService何时使用?

Java AyncTask和IntentService何时使用?,java,android,Java,Android,我无法调用AsyncTask和IntentService。 我正在开发一个android应用程序,它有用户注册活动。当用户在注册活动中输入用户名时,我必须通过向服务器发送HTTP请求来检查用户名是否已被使用。来自服务器的响应是带有用户名的JSON对象 请帮助我调用design background username check AsyncTask/IntentService查看优缺点。如果您使用的是AsyncTask,则此处不需要IntentService。如果您发布代码,我们可以告诉您可能做错

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


请帮助我调用design background username check AsyncTask/IntentService查看优缺点。

如果您使用的是AsyncTask,则此处不需要IntentService。如果您发布代码,我们可以告诉您可能做错了什么,但是使用AsyncTask在线程上发出HTTP请求非常简单

下面是一个很好的示例,说明如何将其用于此目的:

基本上,AsyncTask只是一个围绕线程的花式包装器,它允许您与显示线程进行对话。您可以使用执行HTTP调用的线程和更新显示的
Runnable
(线程可以使用
处理程序调用)来实现完全相同的结果

从这个角度来看,这很有帮助

您应该将AsyncTask用于短时间重复的任务,这些任务是 与某项活动紧密结合,比如您当前正在尝试做的事情。 IntentService更倾向于计划任务(重复或重复) 不)应在后台运行,与您的活动无关

所以这个建议也适用于你


除此之外,我建议您研究一下IntentService,Asynctask无论如何都是不可比的

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

  • 只是另一个花哨的java类
  • 必须从主线程创建和执行
  • 使用后台线程进行操作
  • 无法在其java范围之外访问
  • 执行多次需要多个实例
  • 方便的设计模式,用于执行任何后台任务以更新UI
  • 必须将上下文作为参数传递才能使用它
  • 当用户调用execute()时开始执行。无需意向解决
我假设两者都是异步运行的,对吗?我在Asyctask的最后一行加了一句,为什么不可以比较呢。当比较和基准测试都是为相同的目标而设计时,效果会更好。让我们说服务与IntentService或AsyncTask与AsyncTaskLoader。您的意思是说可以通过AsyncTask/服务实现的目标不能通过它的计数器部分实现?