I have to create a Kotlin application that needs to fetch data from a RPI by WiFi in pseudo-real time (every five seconds).
I have tried doing that using a Thread, like this :
private fun getRecentData() {
requestType = recentDataRequest
binding.periodDataButton.isVisible = true
binding.realTimeDataButton.isVisible = false
while (true) {
communication.requette(requestType)
Thread.sleep(5000)
}
}
but it makes my app crash (I'm not really surpised by this, to be honest). I'v also tried doing a loop on the server side, like this :
while (true) {
//Construction trame données temps réel à envoyer au client
gestionBDD.prepareRequete("select * from recent_data");
rs = gestionBDD.executeQuerry();
while (rs.next()) {
recentData.setIntensity(rs.getFloat("intensity"));
recentData.setTension(rs.getFloat("tension"));
recentData.setApparentPower(rs.getFloat("apparent_power"));
recentData.setReactivePower(rs.getFloat("reactive_power"));
recentData.setElectricalPower(rs.getFloat("electrical_power"));
recentData.setPowerFactor(rs.getFloat("power_factor"));
}
reponse = gsonReponse.toJson(recentData);
}
but it doesn't work either, cuz my server answer only it receives a message, and I send a message only when I click on a butonn on my app. So what I'm looking for is a way to send a message to my server every five seconds without making my app crash.