我想在我的应用中使用网络服务进行登录活动。提出请求的最佳做法是什么?
我应该使用IntentService还是应该使用AsynkTask类并覆盖其方法?
答案 0 :(得分:2)
使用AsyncTask
将有助于使您的代码更加简单。
在这种情况下,您将只使用一个类到另一个类。在这种情况下,您可以以最简单的方式传输数据。
在第二种情况下 - intentservice - 您必须编写/读取/收集/提取数据,时间滞后等。
修改强> 1.您可以在轮换前取消请求 2.您可以检查您的请求是否正在进行中,并且不再启动它。 3.您可以在登录屏幕中禁用旋转。
答案 1 :(得分:2)
如果使用IntentService
,则必须实现Binder与UI通信,而AsyncTask
提供更新UI的回调。
但是,AsyncTask
的缺点是每次启动调用活动时都会启动它。因此,要处理此问题,您可以使用AsyncTaskLoader
为后台工作提供AsyncTask
并处理其状态,以避免通过配置更改再次启动它。
Android开发人员教程有一个很好的例子,说明如何使用AsyncTaskLoader
。你可以找到它here。
答案 2 :(得分:1)
您应该使用Aysnc任务,因为IntentService在后台运行,因此您必须在网络呼叫响应后更新UI。
因此异步任务更适合您的情况。
我们用于长期后台运行任务的IntentService,它将在完成工作后自行终止。
答案 3 :(得分:0)
AsyncTask只是在类中运行异步操作。
IntentService运行一项新服务并执行您想要的操作。
使用AsyncTask会更容易,因为您可以在活动中使用它,您可以将目标运行到目标活动(注册者,用户区域等)。
如果您使用IntentService,则必须创建绑定器,收集数据,监控它等等。为此目的,IntentService的工作量远远超过它的价值。