2014-11-02 71 views
0

我正在开发这个约会应用程序,允许用户浏览从服务器下载的配置文件。如何从后台服务获取结果,但仍然保持运行在android

但我不知道我应该用什么样的线程或服务来上传和从服务器上下载。

它必须是一个在后台运行的服务,首先通过套接字连接到服务器,然后等待来自用户输入(来自UI线程)的命令。

我读了Service和IntentService类。IntentService似乎是合适的,只不过它在完成作业并将结果返回给调用线程后被销毁。我需要它继续倾听请求。

我每次都可以开始一个新的服务,但这意味着我必须重新连接服务器,每次请求(假设每次浏览配置文件时)。这看起来不正确。

任何人都可以告诉我为此目的的最佳方法是什么?

+0

尝试维护持久的套接字连接在移动应用程序开发中具有挑战性。你为什么要走这条路线,而不是使用Web服务,而使用像SPDY这样的东西来保持套接字的连接? – CommonsWare 2014-11-02 22:40:31

+0

我不知道使用套接字在移动应用程序开发中被挫败......我已经构建了这个客户端 - 服务器通信代码,并希望将其转移到Android。我对网络通信很陌生,所以我不知道有其他选择。所以创建一个Web服务比套接字通信更好? – 2014-11-02 23:11:12

+0

“我不知道在移动应用程序开发中使用套接字是不鼓励的 - ”套接字并不气馁。由于这些设备是移动设备,因此难以在移动设备中维护持久的套接字连接。用户四处走动,进入电梯,驾驶等。这使得移动设备在不同的WiFi接入点之间翻转,故障切换到移动数据等。每当发生这种事情时,现有的套接字连接必须被重新建立。因此,所有其他条件相同的情况下,只有在需要此类连接时才使用长期连接。 – CommonsWare 2014-11-02 23:16:08

回答

0

如果您在询问如何使客户端在UI线程外发送下载/上传请求,那么您可以尝试使用AsyncHttpClient。几乎在我开发的每个应用程序中,我一直使用它,并且它非常可靠。

但是,如果你想从服务器发送数据到客户端(换句话说,客户端保持监听任何传入数据),我推荐你使用GCM。这里是一步一步的教程implementing GCM in Android device