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.
