/ / Qu'est-ce qui fait que Looper.Loop () se bloque (c'est-à-dire qu'il ne revient jamais) - Android, multithreading, gestionnaire, boucleur

Qu'est-ce qui fait que Looper.Loop () se bloque (c'est-à-dire qu'il ne retourne jamais) - Android, multithreading, gestionnaire, looper

Je suis un peu confus à propos de quelque chose. Fondamentalement, je suis en train de créer un fil de discussion et je souhaite également exécuter une boucle de message dans ce fil de discussion. Je fais essentiellement ce qui suit: Ceci est directement issu de la documentation de l'API de classe Android Looper. Cependant, mon application reste toujours bloquée dans Looper.loop () et n'en retourne jamais. Mon travail actuel pour cela consiste à créer un gestionnaire dans le fil principal (ou le fil de l'interface utilisateur) et à envoyer des messages à ce fil. Cependant, pour des raisons de propreté et pour donner du sens à la fluidité de mon application, je préférerais que mes messages soient envoyés au fil que je crée.

class LooperThread extends Thread {
public Handler mHandler;

public void run() {
Looper.prepare();

mHandler = new Handler() {
public void handleMessage(Message msg) {
// process incoming messages here
}
};

Looper.loop();
// The rest of the code below is a control loop
}
}

Avez-vous des idées sur ce qui pourrait empêcher Looper.loop () de ne jamais revenir?

Réponses:

5 pour la réponse № 1

Looper.loop crée une boucle infinie et ne s'arrête que lorsque vous appelez quit

http://developer.android.com/reference/android/os/Looper.html#loop()


-2 pour la réponse № 2

Cela peut fonctionner

class LooperThread extends Thread {
public Handler mHandler;

public void run() {
Looper.prepare();
while(true){
mHandler = new Handler() {
public void handleMessage(Message msg) {
// process incoming messages here
}
};
}
// The rest of the code below is a control loop
}
}