Как анимация работает в потоке пользовательского интерфейса без блокировки других сообщений и запуска в очереди сообщений потока пользовательского интерфейса? - PullRequest
1 голос
/ 06 июля 2019

Я работаю над старым кодом Android, где код выглядит примерно так:

public void TestMethod() {
    // handler posting on main thread
    handler.post(() -> {
        //Invokes method();    
    });

    animation.addListener(new AnimatatorListenerAdapter(){
         @Override
         public void onAnimationEnd() {
             // Do some stuff;
         }
    });
    animation.start();
} 

Насколько я понимаю, обратные вызовы жизненного цикла анимации всегда выполняются в потоке пользовательского интерфейса. Так как метод () размещается первым в очереди сообщений, поэтому он должен выполняться перед onAnimationEnd (), но иногда (3/10 раз) onAnimationEnd выполняется перед методом (). Поэтому сейчас я запутался в анимации Android (конечно, я что-то упускаю).

Вопросы:

  • Каким должен быть идеальный поток в этом коде?

  • Между method() и onAnimationEnd(), какой из них будет выполнен первым и почему?

  • Как анимация Android выполняется в потоке пользовательского интерфейса без блокировки других сообщений и запускается в очереди сообщений в потоке пользовательского интерфейса?

...