Qualcuno può spiegare perché i gestori pubblicano un eseguibile? L'override di handleMessage e l'invio di un messaggio fanno la stessa cosa?Android: perché i gestori pubblicano un eseguibile?
Ho scritto un codice non verificato per mostrare come penso che questi due modi sarebbero stati implementati. Per favore correggimi se sbaglio nel mio approccio.
Handler con Post:
handler.post(new Runnable() {
@Override
public void run() {
imageView.doSomething();
}
});
Handler con handleMessage:
final Handler handler = new Handler() {
@Override
public void handleMessage(Message message) {
imageView.doSomething();
}
};
handler.sendMessage(message);
Bene, c'è un colpo molto piccolo per le prestazioni per la creazione di un nuovo oggetto (il runnable). Ma è trascurabile. – eordano
Tuttavia, se si desidera eseguire il codice sul thread dell'interfaccia utente, è necessario creare il gestore nel thread dell'interfaccia utente oppure utilizzare "new handler (Looper.getMainLooper())". Con "new Handler()" crei un Handler nel thread corrente, che non deve essere il thread principale. – Kuno