如何在消息队列中处理方向更改?

jus*_*oob 6 android

这是原子操作吗?

我的意思是,在方向更改期间,主线程上是否有可能执行其他任何操作?

例如,假设主线程上的流程是这样的:

someOperation - > orientationChangeStart - > someOtherOperation - > orientationChangeEnd

这可能吗?

someOtherOperation在方向更改正在进行时,是否可以在UI线程上执行?

提前致谢.

And*_*lov 3

是的,这是原子操作。

在伪中它看起来像:

void setNewOrientation(int state) {
    currentState = state;
    runOrientationChangedEvent();
}
Run Code Online (Sandbox Code Playgroud)

然后通常Activity会重新创建。只有重新创建 Activity 才会添加到消息队列中,因此可以查看是否足够快地更改设备方向。

您无法开始和结束此过程,因为它只是更改了一些 int 变量,这些变量可以告诉您当前的方向,例如orientation

getActivity().getResources().getConfiguration().orientation
Run Code Online (Sandbox Code Playgroud)

轮换

getWindowManager().getDefaultDisplay().getRotation();
Run Code Online (Sandbox Code Playgroud)

所以只有在方向改变才能获取事件。