我正在使用AsyncHTTPClient
与我的服务器API进行通信。
我读过我必须使用services
与服务器通信。
1)AsyncHTTPClient
已经service
了吗?或者我是否仍需要将使用AsyncHTTPClient
的所有方法都放入我自己的services
?或者可以直接从我的活动中调用AsyncHTTPClient
方法吗?
2)我无法理解如何正确使用services
。假设我不使用AsyncHTTPClient
,但我有几个不同的行为可以调用服务器API(获取 现实,获取 用户,发布 用户等)。我是否必须将每个操作放入单独的service
?如果没有,我如何从同一个服务调用不同的方法?我看到的所有示例都表明,只有一个操作会在Activity启动时自动调用。
3)我发现了另一个Android REST库Retrofit - 它比AsyncHTTPClient
有什么优势吗?我是否需要将其放入services
?
答案 0 :(得分:1)
首先,我建议您使用Retrofit。我已经使用过AsynHttp,但现在我正在使用Retrofit,我对它非常满意。
关于问题中的主题:
我读过我必须使用服务与服务器通信。
你在哪里读到这个?我没有为我的请求创建服务,所有这些都很好。创建请求的要点是在后台线程中创建它们。因此,如果您不使用AsyncHttp或Retrofit之类的lib,则必须将您的请求放在AsynTask类中。例如。
AsyncHTTPClient已经是服务吗?
没有。它是一个发出异步HTTP请求的库。在the site of the lib中,他们说:
所有请求都是在您应用的主UI线程之外发布的 和 您还可以在服务或后台线程中使用 < /强>
也就是说,您可以在服务中使用它,但他们并不是说您必须在服务中使用它。
该站点中的示例教授如何使用此库创建RestClient。这是一个很好的例子。您只需要创建一个静态类并将方法放到您的帖子中,获取等等
我无法理解应该如何正确使用服务。
Services用于后台长时间运行的操作。将服务与lib(AsyncHttp或Retrofit)一起使用的一种可能方法是,当您想要向服务器发出请求时,即使用户未使用您的应用程序也是如此。因此,您可以使用计时器创建一个服务,该计时器将按照您定义的时间间隔调用服务器。
改造 - 它是否比AsyncHTTPClient有任何优势?
支持Retrofit,您不必再将其放入服务中。只有你需要这个。他们说,从threir网站开始, Retrofit将您的REST API转变为Java接口。这使得您的客户端非常简单,并且自我记录,因为每次调用您的服务器API都将是此接口中的一种方法,我认为这是一个很大的优势。使用Retrofit很简单。正如我所说,现在我改为Retrofit,我可以说,lib有很好的文档和支持,它有很多用户。所以很容易找到一些bug的解决方案。其他优点是它已经具有lib GSON,这对于解析将从服务器API接收的JSON非常有用。
但当然谈论优势是危险的,因为你可以找到许多个人意见。见this question and its answers。我认为那里的一些答案也可以帮助您做出选择。
要完成,这里有一些链接,其中包含有关Retrofit以及如何使用这个功能强大的库创建请求的教程。