こんにちは、私は ANandroid で tcp ソケット接続を備えたクライアント サーバー アーキテクチャを持っています。サービス 'onStart()' にソケット リスナー スレッドがあります。どういうわけか接続が失われた後、サーバーに再接続したい。この問題をどのように設計できますか? いくつかの方法を試しましたが、サービスの開始時に無限ループに陥りました...答えてくれてありがとう。
リスナーコードはこんな感じ…
@Override
public void onStart(final Intent intent, int startId) {
super.onStart(intent, startId);
Log.d(TAG, "onSTARTED!!");
if(!mySocket.isConnected()){
connectiontoServer();
}
clientListenerThread = new Thread(new Runnable() { // TCP Socket Listener
public void run() {
String line = new String();
try {
while(mySocket.isConnected() && ((line = in.readLine()) != null)){
try{
Log.d(TAG, "service onStart-while true");
String[] tokens = line.split(MessageClass.ayirac);
Log.d(TAG+"-MSG", line);
tokens = line.split(MessageClass.ayirac);
int msgCase = Integer.parseInt(tokens[0]);
switch(msgCase){
case -5:
responseEntrance(line);
break;
case 1:
responseLogin1(line);
break;
case 2:
responseRegister2(tokens);
break;
default:
break;
}
}catch (Exception e) {
e.printStackTrace();
Log.d(TAG, "CATCH1 !");
continue;
}
}
}catch(IOException e){
e.printStackTrace();
if(!mySocket.isConnected()){
Log.d(TAG,"ConnectionDOWN! in catch2");
stopAndDestroyMyActivity();
}
}
Log.d(TAG, "LISTENING FINISH!");
stopAndDestroyMyActivity();
}
});
clientListenerThread.start();
}