Czy ktoś może wyjaśnić, dlaczego Handlery mają możliwość uruchomienia? Czy nadpisywanie wiadomości Czy wysyłanie wiadomości powoduje to samo?Android: Dlaczego Handlery są uruchamiane?
Napisałem kilka nieprzetestowanych kodu, aby pokazać, jak myślę, że te dwa sposoby zostaną wdrożone. Proszę, popraw mnie, jeśli się mylę w moim podejściu.
Handler z post:
handler.post(new Runnable() {
@Override
public void run() {
imageView.doSomething();
}
});
Handler z handleMessage:
final Handler handler = new Handler() {
@Override
public void handleMessage(Message message) {
imageView.doSomething();
}
};
handler.sendMessage(message);
Cóż, istnieje bardzo małe uderzenie wydajności w tworzenie nowego obiektu (działającego). Ale to nieistotne. – eordano
Jednakże, jeśli chcesz wykonać kod na wątku UI, musisz utworzyć Handler w wątku UI lub użyć "new Handler (Looper.getMainLooper())". Dzięki "new Handler()" tworzysz Handler w bieżącym wątku, który nie musi być głównym wątkiem. – Kuno