Emi*_*mil 11 android tcp tcpclient
我正在开发一个需要TCP连接到TCP服务器的Android应用程序(以Node.js编写)
我的Android TCP客户端正在工作,可以来回发送消息.
我的特定问题是:
我在AsyncTask中有我的套接字连接,如下所示:
@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;
}
Run Code Online (Sandbox Code Playgroud)
我在AsyncTask中连接的原因是因为我使用的是android 4.0并且不允许在常规线程中使用网络代码.
服务应该拥有连接.如果您需要在应用程序未运行时保持连接,则应将其作为前台服务.如果您不将其作为前台服务,请确保从您的活动绑定到该服务以使其保持活动状态.
不要忘记该服务也在主(UI)线程上运行,因此您仍然需要一个单独的线程来处理通信.
如果您只有一个活动并且只想处理由于配置更改而导致的重新启动,那么您可以自己处理配置更改,保持连接由非ui片段拥有,或者使用onRetainNonConfigurationInstance()/ getLastNonConfigurationInstance将连接传递给您自己( )(但不赞成使用片段).
| 归档时间: |
|
| 查看次数: |
11606 次 |
| 最近记录: |