我正在处理一些旧的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();
}
据我了解,动画生命周期回调始终在UI线程上执行。由于method()首先发布在消息队列上,因此应在onAnimationEnd()之前执行,但有时(3/10次)onAnimationEnd在method()之前执行。因此,现在我对android动画感到困惑(肯定我错过了一些东西)。
问题:
此代码中的理想流程应该是什么?
在method()
和onAnimationEnd()
之间,哪个首先执行,为什么?
android动画如何在UI线程上执行而又不会阻止其他消息并且可在UI Thread的消息队列中运行?