這是一個原子操作嗎?在消息隊列中如何處理方向更改?
我的意思是有可能在方向改變期間在主線程上執行其他任何操作?
例如,假設在主線程的流程是這樣的:
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