У меня есть проект, где приложение 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();
}
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 и мое приложение даже не запускается, и я получаю это предупреждение:
С приложением: Приостановка всех потоков заняла: 10.644мс.
И мой вопрос:
Есть ли способ я могу обновить мое приложение, и оно будет снова подключить к серверу и обновить значения на экране? Он работает, если я закрываю приложение и снова его открываю. Я ценю любую помощь.