我正在努力解决一个非常罕见的问题。 在这里:
我有一个SurfaceView,并且有一个JNI端线程处理它上面的渲染操作(比如Render-thread)。对于"一些"我需要在渲染线程中自己旋转我的绘图。为此,渲染线程从android框架查询旋转状态。每当设备旋转时我都可以看到旋转的屏幕,但是有一个问题:如果我旋转设备,Render-Thread渲染的屏幕会旋转,但是Android UI(例如通知栏,Toast消息等)是不旋转(当然!)。要解决此问题,我使用setRequestedOrientation函数告诉Android旋转我的Activity。然后我还可以看到正确旋转的Android UI。在这一刻,我真正的问题出现了:Render-Thread和Android的屏幕旋转之间的竞争(我猜表面闪烁?)。
显然,如果我调用setRequestedOrientation函数,Android框架会自动旋转屏幕,而我的渲染线程也会绘制旋转的屏幕。这导致了一个小故障。
我的问题是:
当我还在调用setRequestedOrientation时,有没有办法告诉Android框架不要旋转SurfaceView?