我正在使用 Matrix 在屏幕上旋转 PNG 图像。我想将旋转操作移动到一个单独的线程,这样 UI 线程就不会受到它的负担。但这提出了一些有趣的问题。
一旦将矩阵应用于 ImageView,我预计需要调用 invalidate()。但是,旋转后的图像在屏幕上显示得很好——而且我从不调用 invalidate()。没有触摸区域,我所做的任何事情都不会明确告诉 UI 刷新屏幕。是什么在刺激 UI 线程更新显示?UI 线程是否神奇地“知道”显示需要更新(因此不需要显式调用 invalidate()),因为 IT 是线程接触作为显示一部分的对象?
当我将旋转移出 UI 线程时,我将操作 UI 用来渲染屏幕的同一个 ImageView。这听起来像是一个需要同步的经典线程冲突问题(因为同一个对象将被多个线程访问)。但是由于上述行为,我不确定如何处理。由于 UI 线程似乎“神奇地知道”屏幕需要更新,我是否需要同步 - 或者单独的线程是否只是在视图上调用 invalidate() 并且会处理它?
谢谢!