2014-04-26 23 views
2

我有一个Android应用每2秒调用一次URL。 这消耗电池,我知道。但是我需要连接,因为应用程序和Web服务器之间必须始终存在连接。Android:HttpURLConnection或套接字?

现在我的问题:是否更好的性能和电池每2秒或一个插座与“HttpURLConnection”实现这一点。 如果套接字,哪个套接字?的AsyncTask,线,WebSocket的,或使用这种方式?: Socket Programming using android and php

+0

即使您每两秒钟做一次这样的操作,并不意味着始终存在连接为http是一种无连接协议。每次请求后连接都会关闭。所以请更好地解释你所需要的。 – greenapps

+0

@greenapps查看我的答案。看看它是否需要改进:) –

回答

1

在我有限的知识,

Socket会不必要地增加了复杂性。坚持HttpURLConnection

至于何时释放连接,
做时,你的应用程序失去焦点像onPause()onResume()并且在它获得焦点重新连接。

4

如果您的目标是Android 2.3或更高版本,请确定使用URLConnection; 以下Android版本考虑Apache HttpClient;

请参阅此链接了解更多信息here

两者(如果正确使用)保持在背景会话和使用ConnectionPooling它可以帮助你避免每次建立新的TCP会话的开销。 URLConnection在新版android版本上进行了高度优化,可能最适合您的挑战。

在ConnectionPooling考虑这个帖子here

不要用插座HTTP,因为所提供的HTTP客户端都经过高度优化(例如URLConnection的使用压缩如果可能的话);只有当你需要访问不同的协议时,插座才是相关的...

+1

如果你需要一个关于'HttpUrlConnection'是多么的轻量级和优化的想法,只需看一下源代码:https://android.googlesource.com/platform/libcore/+/参考文献/头/主/ LUNI/SRC /主/ JAVA/JAVA /净/ HttpURLConnection.java – Shlublu

2

你正在走向非常错误的方向。如果你想每隔2秒监听服务器上的任何变化,只需让服务器管理这件事情。你可以使用XMPP或修改推送通知。如果您希望每隔2秒从服务器获取一些数据,则可以使用带有推送通知的有效载荷,它允许您在每次通知时都使用4k数据

相关问题