2017-03-15 82 views
1

作为概念的证明,我正在实现一个Android应用程序,该应用程序在后台运行一个非常简单的TCP服务器,以处理来自某些物联网设备的连接。我还必须通过某些活动与服务器通信,以将一些数据发回给物联网设备。 我应该使用什么来在后台运行服务器?有AsyncTasks,线程和Android服务。最好的方法是什么?在Android应用程序中运行TCP服务器

回答

1

如果您的目标是只在您的某个活动处于前台时在TCP端口上进行侦听,请让该活动仅分叉一个线程。

如果您的目标是让您的应用程序在您的UI处于后台时侦听TCP端口,请使用分叉线程的服务。

AsyncTaskIntentService适用于事务性工作(磁盘I/O,Web服务调用等),但不适合不确定使用。

另外,请记住,拥有开放端口会引发安全问题。

+0

谢谢你的回答。我的目标是在我的活动处于前台时只听TCP端口。所以最好的做法是在单独的线程中创建服务器任务?但是,我将如何与它沟通? – Javiator

+0

@Javiator:与什么沟通?除了需要担心'INTERNET'权限,并且需要担心移动设备是移动设备(并因此在网络之间切换)之外,在Android上实现套接字与在传统Java上实现套接字完全不同。 Java程序在二十年来一直与互联网合作。找到适用于Android的图书​​馆并满足您的特定需求。 – CommonsWare

+0

我必须不断从所有活动中收听消息,可以在服务中运行TCP服务器吗? –

相关问题