我正在处理一个需要TCP连接到TCP服务器的 
 Android应用程序(写在Node.js中) 
  
 
我的Android TCP客户端正在工作可以来回发送消息.
我的奇怪问题是:
>在Android中处理与服务器的TCP连接的最佳方式是什么?
>如何维护连接(onDestroy()等)正确关闭连接)?
>有没有更好的方式然后使用AsyncTask(除了普通的线程类,这是不允许在Android 4.0)
我在AsyncTask中的socket连接如下所示:
@Override
protected Void doInBackground(Void... params) {
        try {
            Log.d("TCP_MESSAGE","Connecting...");
                socket = new Socket(MY_LOCAL_IP,8080);
                dataOutput = new DataOutputStream(socket.getoutputStream());
                inputstream = new InputStreamReader(socket.getInputStream());
                input = new BufferedReader(inputstream);
            while (!canceled) {
                String message = input.readLine();
                handleMessage(message);
            }
        } catch (Exception e) {
            e.printstacktrace();
        }
    }
    return null;
} 
 我在AsyncTask中连接的原因是因为我正在使用Android 4.0,并且不允许在常规线程中具有网络代码.
解决方法
 服务应该拥有连接.如果您的应用程序未运行时需要保持连接,则应将其作为前台服务.如果您不使其成为前台服务,请确保从活动中绑定到服务以保持活动状态. 
  
 
        不要忘记,该服务也在主(UI)线程上运行,因此您仍然需要一个单独的线程来处理通信.
如果您只有一个活动,并且只是想要由于配置更改来处理重新启动,那么您可以自己处理配置更改,保持非ui片段所拥有的连接,或使用onRetainNonConfigurationInstance()/ getLastNonConfigurationInstance() )(但是不赞成使用片段).