2017-02-18 19 views
0

アンドロイドアプリがtcpサーバに接続しており、そこからデータを受信して​​いるプロジェクトがあります。サーバーはループで動作します。
1.接続を待ちます。
2.クライアントを受け入れます。
3.クライアントにデータを送信します。
4.接続を閉じます。
5.戻る1.
サーバに接続するためのリフレッシュアクティビティ

私のアプリケーションは、のonCreate()メソッドでサーバに接続しているし、それが動作する、それがデータを受信して​​いるが、私はそれが再び接続を行うことができますので、それはループ内で仕事をしたいです。

ここにアプリケーションコードがあります。
のonCreate方法:

protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     temperatureValue = (TextView) findViewById(R.id.temperatureValue); 
     humidityValue = (TextView) findViewById(R.id.humidityValue); 
     lightValue = (TextView) findViewById(R.id.lightValue); 


     new Thread(new ClientThread()).start(); 
    } 

ClientThread:

class ClientThread implements Runnable 
{ 
    String data; 

    @Override 
    public void run() 
    { 
     try 
     { 
      InetAddress serverAddr = InetAddress.getByName(SERVER_IP); 
      socket = new Socket(serverAddr, SERVER_PORT); 
     } 
     catch (UnknownHostException e1) 
     { 
      e1.printStackTrace(); 
     } 
     catch (IOException e2) 
     { 
      e2.printStackTrace(); 
     } 
     try 
     { 
      InputStream in = socket.getInputStream(); 
      BufferedReader br = new BufferedReader(new InputStreamReader(in)); 
      data = br.readLine(); 

      splitData(data); 
     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 

    } 

splitData方法:

文字列サーバから受信

public void splitData(String data) 
    { 
     String[] parts = data.split(";"); 
     String temperatura, wilgotnosc, swiatlo; 

     temperatura = parts[0]; 
     wilgotnosc = parts[1]; 
     swiatlo = parts[2]; 

     temperatureValue.setText(temperatura.substring(0, 5)); 
     humidityValue.setText(wilgotnosc.substring(0, 5)); 
     lightValue.setText(swiatlo); 
    } 
このようになります。
"温度、湿度、光"

hereと私のアプリケーションが起動していないと、この警告が表示されます。
W/art:すべてのスレッドを中断しました:10.644ms。

そして、私の質問は:私は私のアプリケーションとそれがサーバに再び接続し、画面で値を更新しますリフレッシュすることができますどのような方法が
ありますか?私はアプリを閉じてもう一度開くと動作しています。私はどんな助けにも感謝します。

答えて

0

splitData(data);

擬似コード:ここにあなたのコードの下

、あなたはメソッドを実装することができrefreshConnection

public void refreshConnection() { 
    Put your time limit when to refresh and go run the run() method again. 
} 
を行います
関連する問題