2016-10-04 103 views
6

这是一个原子操作吗?在消息队列中如何处理方向更改?

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

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

someOperation - >orientationChangeStart - > someOtherOperation - >orientationChangeEnd

这可能吗?

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

在此先感谢。

回答

3

是的,这是原子操作。

伪它看起来像:

void setNewOrientation(int state) { 
    currentState = state; 
    runOrientationChangedEvent(); 
} 

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

你不能启动,这个过程的结束,因为它只是改变了一些INT变量,可以告诉你目前的方位像方向

getActivity().getResources().getConfiguration().orientation 

旋转

getWindowManager().getDefaultDisplay().getRotation(); 

所以你可以在方向改变后得到事件

相关问题