在Android中同步多个窗口和多个视图

在Android中同步多个窗口和多个视图,android,multithreading,animation,synchronization,window,Android,Multithreading,Animation,Synchronization,Window,我有一个同时显示两个窗口的应用程序。窗口A显示一个SurfaceView,窗口B显示一个视图。每个窗口(自然)都有自己与该窗口关联的曲面。目前只有窗口A在屏幕上显示其SurfaceView,而窗口B不显示任何内容。 我想在两个窗口之间切换,而不让用户注意到任何闪烁,或者同时看到两个窗口。总之,我希望达到以下效果: 窗口A->隐藏表面查看A 窗口B->显示视图B 两者发生在同一时间 我面临的问题是,无论我多么努力地同步显示,每个窗口都会在稍微不同的时间范围内显示/隐藏其视图,导致屏幕上显示闪烁

我有一个同时显示两个窗口的应用程序。窗口A显示一个
SurfaceView
,窗口B显示一个视图。每个窗口(自然)都有自己与该窗口关联的曲面。目前只有窗口A在屏幕上显示其
SurfaceView
,而窗口B不显示任何内容。 我想在两个窗口之间切换,而不让用户注意到任何闪烁,或者同时看到两个窗口。总之,我希望达到以下效果:

  • 窗口A->隐藏表面查看A

  • 窗口B->显示视图B

两者发生在同一时间

我面临的问题是,无论我多么努力地同步显示,每个窗口都会在稍微不同的时间范围内显示/隐藏其视图,导致屏幕上显示闪烁或两个视图

我尝试了以下方法:

  • 线程A->隐藏视图A->准备绘图(
    lockCanvas
    ),并暂停(等待)线程,直到收到信号

  • 线程B(UI线程)->显示表面视图B->覆盖视图的
    绘制
    ,通知线程A释放自身,然后绘制

  • 线程A->接收信号并在屏幕上绘制(
    解锁和后扫描

实际上,我得到的结果不一致,而且两个窗口并不总是同步的。有时我可以看到并排显示两个视图的框架,有时我可以看到完全没有视图的框架。我甚至尝试使用使两个窗口在下一帧更改其显示,但再次,我无法实现完全同步


有人有其他想法吗?

你解决过这个问题吗?