2016-10-04 5 views
6

क्या यह एक परमाणु ऑपरेशन है?संदेश कतार में अभिविन्यास परिवर्तन कैसे संभाला जाता है?

मेरा मतलब यह है कि यह संभव है कि किसी अन्य परिवर्तन को अभिविन्यास परिवर्तन के दौरान मुख्य धागे पर निष्पादित किया जाए?

उदाहरण के लिए, मान लीजिए कि मुख्य थ्रेड पर प्रवाह कुछ इस तरह है करते हैं:

someOperation ->orientationChangeStart -> someOtherOperation ->orientationChangeEnd

यह संभव है?

क्या someOtherOperation यूआई थ्रेड पर निष्पादित हो सकता है जबकि एक अभिविन्यास परिवर्तन प्रगति पर है?

अग्रिम धन्यवाद।

उत्तर

3

हां, यह परमाणु संचालन है।

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

और फिर आम तौर पर Activity फिर से बनाई गई है:

छद्म में यह तरह दिखता है। गतिविधि की पुन: निर्माण केवल संदेश कतार में जोड़ती है, इसलिए यह देखना संभव है कि डिवाइस अभिविन्यास को पर्याप्त तेज़ी से बदलना है या नहीं।

आप शुरू कर सकते हैं नहीं मिल और इस प्रक्रिया के अंत में, क्योंकि यह बस कुछ ही पूर्णांक चर बदलता है जो उन्मुखीकरण की तरह वर्तमान उन्मुखीकरण के बारे में आपको बता सकता है:

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

या रोटेशन

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

तो अभिविन्यास बदलने के बाद आप केवल ईवेंट प्राप्त कर सकते हैं।

2

शायद आप orientationChangeStart और orientationChangeEnd के बीच के समय को मापने के लिए सक्षम नहीं होगा, लेकिन आप अपने someOtherOperation निपटने घटना onConfigurationChanged निष्पादित कर सकते हैं। उदाहरण: How to use onConfigurationChanged() and newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE in android 2.3.3

+0

जो एक ऑपरेशन नहीं है ** जबकि ** यह बदलता है। ** के बाद यह केवल ** बदल गया। – DEADMC

संबंधित मुद्दे