他们可以用于不同的目的非常不同。
AsyncTask
是一个方便的线程实用程序,可以使用,如果你需要不断告诉用户的东西或定期对主线程执行操作。它提供了大量的细粒度控制,并且由于它的性质非常容易在Activity
中使用,而IntentService
通常需要使用BroadcastReceiver
或IBinder
框架。
IntentService
可以非常类似于AsyncTask
,但它的目的是用于后台下载,上传或其他不需要用户交互或主线程的阻塞操作。例如,如果您想下载并缓存地图,则可能需要致电IntentService
,以便用户无需查看该应用即可下载。同样,如果您要将数据发送到服务器,则在这方面IntentService
非常有用,因为您可以开始并忘记。例如,用户可以在您的应用中输入评论,然后按“发送”。 “发送”将启动IntentService
,它将获取评论并在后台线程中将其发送到您的服务器。用户可以按下“发送”并立即离开应用程序,评论最终仍会到达您的服务器(当然假设没有错误)。如果您在Activity
的Activity
中执行AsyncTask
,系统可能会在交换过程中关闭流程,并且可能会或可能无法通过。
一般来说,这两个都不适用于长时间运行的应用程序。它们意味着短暂的一次性操作。它们可以用于永久性或长时间运行的操作,但不建议。
谢谢你的回答。你能给我一个使用IntentService的例子吗? – 2013-03-01 21:34:13
假设您为应用程序中的给定区域保存了路径(如“收藏夹”或类似内容)。如果您想让它们保持最新,那么只需设置一个每天运行的IntentService,并检查这些区域的变化。 – ebarrenechea 2013-03-01 21:42:08
啊,我明白了。所以我想这就像我们手机上的Facebook或Gmail通知一样? – 2013-03-01 21:44:36