这是一个原子操作吗?在消息队列中如何处理方向更改?
我的意思是有可能在方向改变期间在主线程上执行其他任何操作?
例如,假设在主线程的流程是这样的:
someOperation - >orientationChangeStart - > someOtherOperation - >orientationChangeEnd
这可能吗?
当方向更改正在进行时,someOtherOperation
可以在UI线程上执行吗?
在此先感谢。
这是一个原子操作吗?在消息队列中如何处理方向更改?
我的意思是有可能在方向改变期间在主线程上执行其他任何操作?
例如,假设在主线程的流程是这样的:
someOperation - >orientationChangeStart - > someOtherOperation - >orientationChangeEnd
这可能吗?
当方向更改正在进行时,someOtherOperation
可以在UI线程上执行吗?
在此先感谢。
是的,这是原子操作。
伪它看起来像:
void setNewOrientation(int state) {
currentState = state;
runOrientationChangedEvent();
}
然后通常Activity
是重新创建。只有Activity的重新创建才会添加到消息队列中,因此可以快速查看是否更改设备方向。
你不能启动,这个过程的结束,因为它只是改变了一些INT变量,可以告诉你目前的方位像方向:
getActivity().getResources().getConfiguration().orientation
或旋转
getWindowManager().getDefaultDisplay().getRotation();
所以你可以在方向改变后得到事件。
也许你将无法orientationChangeStart和orientationChangeEnd之间进行测量的时间,但你可以执行你的someOtherOperation处理onConfigurationChanged事件。 例如: How to use onConfigurationChanged() and newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE in android 2.3.3
这不是一个操作**而**它改变。它改变后的唯一**。 – DEADMC