1
作为概念的证明,我正在实现一个Android应用程序,该应用程序在后台运行一个非常简单的TCP服务器,以处理来自某些物联网设备的连接。我还必须通过某些活动与服务器通信,以将一些数据发回给物联网设备。 我应该使用什么来在后台运行服务器?有AsyncTasks,线程和Android服务。最好的方法是什么?在Android应用程序中运行TCP服务器
作为概念的证明,我正在实现一个Android应用程序,该应用程序在后台运行一个非常简单的TCP服务器,以处理来自某些物联网设备的连接。我还必须通过某些活动与服务器通信,以将一些数据发回给物联网设备。 我应该使用什么来在后台运行服务器?有AsyncTasks,线程和Android服务。最好的方法是什么?在Android应用程序中运行TCP服务器
如果您的目标是只在您的某个活动处于前台时在TCP端口上进行侦听,请让该活动仅分叉一个线程。
如果您的目标是让您的应用程序在您的UI处于后台时侦听TCP端口,请使用分叉线程的服务。
AsyncTask
和IntentService
适用于事务性工作(磁盘I/O,Web服务调用等),但不适合不确定使用。
另外,请记住,拥有开放端口会引发安全问题。
谢谢你的回答。我的目标是在我的活动处于前台时只听TCP端口。所以最好的做法是在单独的线程中创建服务器任务?但是,我将如何与它沟通? – Javiator
@Javiator:与什么沟通?除了需要担心'INTERNET'权限,并且需要担心移动设备是移动设备(并因此在网络之间切换)之外,在Android上实现套接字与在传统Java上实现套接字完全不同。 Java程序在二十年来一直与互联网合作。找到适用于Android的图书馆并满足您的特定需求。 – CommonsWare
我必须不断从所有活动中收听消息,可以在服务中运行TCP服务器吗? –