2012-04-28 9 views
0

こんにちは、私は、クライアントのサーバーアーキテクチャは、ANdroidでTCPソケット接続を持っています。私はサービス 'onStart()'にソケットリスナースレッドを持っています。何とか接続が失われた後にサーバーに再接続したい。どうすればこの問題を設計できますか?私はいくつかの方法を試しましたが、サービス開始時に無限ループに入りました...答えるためにありがとう。 私のAndroidネットワークサービスの寿命はどのくらいですか?

リスナーのコードは次のようである

...

@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(); 
    } 

答えて

関連する問題