J'ai un problème et je ne peux pas résoudre. J'essaie de faire, juste pour des expériences, un client Android qui reçoit et envoie des messages (w/multithread, donc je ne dois pas attendre le serveur qui envoie le message ou vice versa) et un serveur écrit pour Windows qui fait presque la même chose de Android Client, recevoir et envoyer des messages (w/multithread aussi ici).Toast.makeText est appelé une seule fois
final Thread t = new Thread(new Runnable() {
@Override
public void run() {
Looper.prepare();
try {
in_server = new BufferedReader(new InputStreamReader(client.getInputStream())); //receive from server
//Log.i("Message from server", in_server.readLine());
Toast.makeText(MainActivity.this, in_server.readLine(), Toast.LENGTH_SHORT).show();
} catch (IOException e) {
Toast.makeText(MainActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();
}
Looper.loop();
}
});
Si j'écris un certain temps (vrai) au lieu de deux boudeurs et je l'utilise « Log.i », je reçois tous les messages envoyés par le serveur, le client et le serveur fonctionnent parfaitement avec cela. Mais si je supprime le "Log.i" et j'utilise "Toast.makeText" et j'ai mis deux Loopers, comme le code ci-dessus, je reçois le premier message que j'envoie du serveur, les autres ne sont pas reçus. Je n'ai aucune idée de comment résoudre ce problème. S'il vous plaît, ne soyez pas impoli, je suis assez nouveau en Java, je fais juste quelques tests mais j'ai juste perdu plus d'une heure pour ça.
Cela peut sembler stupide, mais le message est-il toujours le même? Si tel est le cas, alors Toast apparaîtra pour ne s'exécuter qu'une seule fois alors qu'il est réellement lancé plusieurs fois. Si le message est différent à chaque fois, alors je ne sais pas ... que c'est un comportement très étrange. –
J'ai envoyé du serveur quelque chose comme "salut" et après "bonjour", je n'ai que "salut" comme Toast. Si j'utilise Log.i dans un certain temps (vrai), je reçois à la fois "salut" et "bonjour" sur le LogCat. Impossible de comprendre le problème. – ontech7