मुझे कोई समस्या है। जब मैं पहली बार अपने एंड्रॉइड एप्लिकेशन की शुरुआत करता हूं, मुख्य गतिविधि में onCreate
और onResume
दोनों कहा जाता है। लेकिन मैं केवल ऑनक्रेट कहलाता हूं।एंड्रॉइड ऑनक्रेट ऑन रीज़्यूम
मैं क्या कर सकता हूं?
मुझे कोई समस्या है। जब मैं पहली बार अपने एंड्रॉइड एप्लिकेशन की शुरुआत करता हूं, मुख्य गतिविधि में onCreate
और onResume
दोनों कहा जाता है। लेकिन मैं केवल ऑनक्रेट कहलाता हूं।एंड्रॉइड ऑनक्रेट ऑन रीज़्यूम
मैं क्या कर सकता हूं?
आप कुछ भी नहीं कर सकते, क्योंकि गतिविधि जीवन चक्र काम करता है।
जीवन चित्र दिखाते हुए एक चित्र के लिए http://developer.android.com/guide/topics/fundamentals/activities.html#Lifecycle देखें।
ठीक है धन्यवाद .. तो अगर ऑनस्यूम को किसी भी समय बुलाया जाता है तो गतिविधि को किसी निश्चित तरीके से व्यवहार करने का कोई तरीका नहीं है पहली पहुंच, और दूसरी तरफ जब वापस बुलाया जाता है .. क्या मैं सही हूँ? – Alessio
@Alessio हां, 'onRestart() 'विधि देखें। @ फेनिक्स का जवाब देखें। –
जैसा कि आप एपीआई में देख सकते हैं, गतिविधि लाइफसाइकिल हमेशा गतिविधि दिखाने से पहले रेज़्यूम पर कॉल करता है। http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle
मुझे लगता है कि आप पहली पहुंच के लिए वैश्विक बूलियन बना सकते हैं और इसे गलत पर सेट कर सकते हैं। फिर ऑनस्यूम ओवरराइड करें और चर की जांच करें। यदि गलत है, तो इसे सही पर सेट करें और यदि सत्य है, तो super.onResume पर कॉल करें।
काम करना चाहिए, लेकिन मुझे नहीं पता कि इसे सरल तरीके से संभाला जा सकता है और मुझे इसका परीक्षण करने के लिए यहां एसडीके तक पहुंच नहीं है।
मैं धन्यवाद का प्रयास करूंगा !! – Alessio
एसडीके दस्तावेज़ों के अनुसार जो आप देख रहे हैं वह इच्छित व्यवहार है। गतिविधि के लिए दस्तावेज़ों में फ्लोचार्ट पर एक नज़र डालें - Activity Lifecycle।
प्रोग्रामेटिक रूप से आप इस बात को ट्रैक कर सकते हैं कि एक उदाहरण सदस्य को यह ट्रैक करने के लिए कि क्या पहले रिलीज़ किया गया है - पहली बार इसे कॉल किया गया है, चर सेट करें और वापसी करें।
private boolean resumeHasRun = false;
@Override
protected void onResume() {
super.onResume();
if (!resumeHasRun) {
resumeHasRun = true;
return;
}
// Normal case behavior follows
}
जब मैं ऐसा करने का प्रयास करता हूं, तो मुझे resusHasRun = true सेट करने का प्रयास करते समय "निलंबित (अपवाद रनटाइम अपवाद)" प्राप्त होता है। कोई विचार? – proudgeekdad
इसके बजाय आपको गतिविधि की ऑनस्टार्ट() विधि का उपयोग करना चाहिए, यह उस उपयोग के मामले के लिए बिल्कुल इरादा है। –
बशर्ते कि आपकी गतिविधि बंद हो जाती है ('ऑनस्टॉप() '), तो @FenixVoltres सही है, उसमें, आपको' onRestart()' का उपयोग करना चाहिए। –
सही जवाब Activity
के onRestart()
विधि का उपयोग करने के लिए है। यह शायद आप जो खोज रहे हैं।
जरूरी नहीं है। 'ऑनस्टार्ट()' केवल तभी बुलाया जाता है जब गतिविधि बंद हो जाती है। – anon
आप सही हैं, लेकिन उपर्युक्त प्रश्न का उत्तर 'onResume()' (जिसे गतिविधि बनाया जाता है) से कोड को ऑनरस्टार्ट() 'पर ले जाना था, जो नहीं है, बिंदु क्या था। –
@bowmanb सही है, लेकिन अपने इरादे को जानने के बिना, ज्यादातर मामलों में, 'onRestart()' वह है जो आप यहां चाहते हैं। –
यदि आप नहीं चाहते हैं तो ऑनस्यूम() को हटा दें। यह प्रभावित नहीं होगा। – Kakey
इस उत्तर की जांच करें यह उपयोगी हो सकता है: http://stackoverflow.com/a/8516056/265167 –