Android TCP连接最佳做法

前端之家收集整理的这篇文章主要介绍了Android TCP连接最佳做法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在处理一个需要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() )(但是不赞成使用片段).

猜你在找的Android相关文章