2012-07-05 14 views
7

के साथ नेविगेट करना है तो मेरे पास होम एक्टिविटी नामक एक गतिविधि है जिसमें एक SurfaceView है और कैमरा पूर्वावलोकन चित्र दिखाता है। यह गतिविधि शांत भारी है और यदि आप इसे प्रारंभ/पुनरारंभ कर रहे हैं तो धीमी लगती है।ऑनक्रेट हमेशा कहा जाता है कि अगर

इसलिए मैंने कुछ जांच की और पाया कि किसी भी तरह से ऑनक्रेट विधि को हमेशा कहा जा रहा है। मेरी राय में यह नहीं होना चाहिए यदि गतिविधि पहले ही शुरू हो चुकी है?

documentation कहता है: गतिविधि पहली बार बनाई गई है जब कॉल किया गया। यह वह जगह है जहां आपको अपने सभी सामान्य स्थैतिक सेट अप करना चाहिए: विचार बनाएं, सूचियों के लिए डेटा बाध्य करें, आदि। यह विधि आपको एक बंडल भी प्रदान करती है जिसमें गतिविधि के पहले जमे हुए राज्य होते हैं, यदि कोई होता तो। हमेशा ऑनस्टार्ट() के बाद।

protected void gotoHome() { 
    final Intent intent = new Intent(SomeOtherActivity.this, HomeActivity.class); 
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(intent); 
} 

संपादित करें::

यहाँ है कि कैसे मैं जा रहा हूँ HomeActivity ... कुछ खास नहीं:

यहाँ विधि, कि वापस जा संभालती है

final Intent i = new Intent(HomeActivity.this, SomeOtherActivity.class); 
startActivity(i); 
+0

सुनिश्चित करें कि आप इसे समाप्त नहीं करते हैं() होमएक्टिविटी इससे दूसरी गतिविधि शुरू करते हैं। – Egor

+0

ऑनक्रेट() कॉल करता है जब आप विधि के साथ वापस जा रहे हैं 'gotoHome() '? –

+0

@Egor मैं फिनिशिंग नहीं कर रहा हूं() – Mark

उत्तर

14

हाँ, जब आप होम एक्टिविटी पर वापस जाना चाहते हैं, आपको इन झंडे का उपयोग करने की आवश्यकता है:

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP); 

यहाँ Intent.FLAG_ACTIVITY_CLEAR_TOP पर दस्तावेज़ीकरण से प्रासंगिक अनुभाग है:

ऊपर के उदाहरण में गतिविधि बी के वर्तमान में चल उदाहरण होगा या तो नए इरादे तुम यहाँ अपने onNewIntent में शुरू कर रहे हैं प्राप्त() विधि , या स्वयं को मंशा के साथ समाप्त और पुनरारंभ करें। अगर उसने अपना लॉन्च मोड "एकाधिक" ( डिफ़ॉल्ट) घोषित कर दिया है और आपने उसी इरादे में FLAG_ACTIVITY_SINGLE_TOP सेट नहीं किया है, तो यह समाप्त हो जाएगा और फिर से बनाया जाएगा; अन्य सभी लॉन्च मोड के लिए या यदि FLAG_ACTIVITY_SINGLE_TOP सेट किया गया है तो यह इरादा वर्तमान इंस्टेंस के ऑन न्यूइन्टेंट() पर दिया जाएगा।

+0

बहुत बहुत धन्यवाद! Facepalm ... स्वयं को यह विचार हो सकता है! – Mark

+0

कभी-कभी यह मुझे आश्चर्यचकित करता है कि आप यहां कितनी जल्दी एक उपयोगी उत्तर प्राप्त कर सकते हैं ;-) मदद की खुशी है। –

+0

हाय डेविड, हर बार जब मैं अपने बच्चे की गतिविधि से वापस आ जाता हूं, तो मेरी सक्रियता की उत्तेजना को बुलाया जाता है, क्या आप मेरी मदद कर सकते हैं? –

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