Java 刷新活动以连接到服务器

Java 刷新活动以连接到服务器,java,android,multithreading,sockets,android-activity,Java,Android,Multithreading,Sockets,Android Activity,我有一个项目,android应用程序正在连接到tcp服务器并从中接收数据。服务器在循环中工作: 1.等待连接。 2.接受客户。 3.向客户端发送数据。 4.关闭连接。 5.返回到1。 我的应用程序正在onCreate()方法中连接到服务器,它可以工作,它正在接收数据,但我希望它在循环中工作,以便它可以再次执行连接 这是一个应用程序代码。 onCreate方法: protected void onCreate(Bundle savedInstanceState) {

我有一个项目,android应用程序正在连接到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();
    }
客户端线程:

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

    }
拆分数据方法:

    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);
    }
从服务器接收的字符串如下所示:
“温度;湿度;光线”

我尝试像人们在本主题中所说的那样刷新我的活动:我的应用程序甚至还没有启动,我收到了以下警告:
W/art:暂停所有线程所需时间:10.644ms

我的问题是:
是否有任何方法可以刷新我的应用程序,它将再次连接到服务器并刷新屏幕上的值?如果我关闭应用程序并再次打开它,它将正常工作。谢谢你的帮助

拆分数据(数据)

伪代码:

在这里的代码下面,您可以实现一个方法DoRefreshConnection

public void refreshConnection() {
  Put your time limit when to refresh and go run the run() method again.
}