2012-05-07 4 views
7

के बीच अंतर करें जब उपयोगकर्ता होम बटन हिट करता है तो मैं अपने कंप्यूटर में NSUserDefaults में डेटा सहेजता हूं। पृष्ठभूमि पृष्ठभूमि में चल रहा है। जब उपयोगकर्ता ऐप को फिर से लॉन्च करता है तो मैं सहेजे गए डेटा को प्रदर्शित करने के लिए विधि applicationWillEnterForeground विधि का उपयोग करता हूं।applicationDidEnterBackground और applicationWillTermimate

हालांकि जब उपयोगकर्ता होम बटन पर डबल टैप करता है और ऐप पर ऋण चिह्न का चयन करके एप्लिकेशन को छोड़ देता है, तो मुझे उसी उपयोगकर्ता डिफ़ॉल्ट में अलग-अलग डेटा सहेजने की आवश्यकता होती है। लेकिन जब मैंने आवेदन छोड़ दिया applicationWillTerminate कभी-कभी और कभी-कभी नहीं कहा जाता है।

तो, मैं कैसे अंतर कर सकता हूं कि एप्लिकेशन को कम किया गया है या इसे छोड़ दिया गया है?

+0

घर बटन दबाए जाने के बाद आप एप्लिकेशनडिड एंटरबैकग्राउंड का उपयोग कर सकते हैं, इस विधि को हमेशा कॉल किया जाता है। – rishi

+0

@ ऋषि ऐसा लगता है कि पोस्ट में असली सवाल यह है कि ऐप को समाप्त होने पर कभी-कभी 'एप्लिकेशनविल टर्मिनेट' क्यों नहीं कहा जाता है ... – Hailei

+0

हाँ, लेकिन मुझे कैसे पता चलेगा कि एप्लिकेशन को कम किया गया है या इसे छोड़ दिया गया है? मैं इन दो अलग-अलग स्थितियों के लिए अलग-अलग डेटा सहेजना चाहता हूं। –

उत्तर

7

जब भी उपयोगकर्ता केवल एक बार टैप करता है और उस समय पृष्ठभूमि में एप्लिकेशन एप्लिकेशनडिडइंटरबैकग्राउंड हमेशा कॉल करता है। इस विधि में आप अस्थायी रूप से अपने NSUserDefaults मान को अपडेट/स्टोर कर सकते हैं।

मामले में, आवेदन फिर से डबल नल का उपयोग करके समाप्त साथ अग्रभूमि में आ जाएगा, तो applicationDidBecomeActive है, जिसमें आप फिर से अद्यतन कर सकते हैं/अस्थायी रूप से संग्रहीत NSUserDefaults मान निकालें कॉल करेंगे। और यदि उपयोगकर्ता डबल टैप द्वारा एप्लिकेशन छोड़ देता है, तो संग्रहीत मूल्य NSUserDefaults के साथ रखा जाएगा।

0

कि पृष्ठभूमि निष्पादन का समर्थन अनुप्रयोगों, इस विधि आम तौर पर क्योंकि आवेदन बस उस मामले में पृष्ठभूमि में चला जाता है जब उपयोगकर्ता आवेदन इस्तीफा नहीं बुलाया जाता है

अगर वहाँ डेटा है कि आप आप से बचाने की जरूरत है है जब ऐप पृष्ठभूमि में जाता है तो इसे करना चाहिए।

0

applicationWillTerminate केवल तब कहा जाता है जब एप्लिकेशन की प्रक्रिया वास्तव में मारे जाती है। यही है, उपयोगकर्ता इसे कार्य स्विचर में लाल माइनस क्लोज़ बटन का उपयोग करके मारता है, या पृष्ठभूमि में सिस्टम स्वयं इसे मारता है (उदाहरण के लिए कम स्मृति स्थिति पर)।

आपकी आवश्यकताओं के लिए, applicationDidEnterBackground पसंदीदा है; जब भी उपयोगकर्ता होम बटन दबाकर या किसी अन्य एप्लिकेशन पर स्विच करके एप्लिकेशन को कम करता है तो उसे कॉल किया जाता है।

5

UIApplicationDelegate विधियों के बीच अंतर के बारे में, कृपया UIApplicationDelegate Protocol Reference देखें। होम बटन दबाए जाने पर applicationDidEnterBackground: हमेशा कॉल किया जाएगा। लेकिन ऐसा लगता है कि applicationWillTerminate: को कॉल करने की गारंटी नहीं है।

यदि आपका ऐप अग्रभूमि में नहीं चल रहा है, तो यह पृष्ठभूमि मोड में या निलंबित मोड में हो सकता है। iOS App Programming Guide - App States and Multitasking के कृपया "ऐप लॉन्च साइकिल" अनुभाग देखें।

जब ऐप पृष्ठभूमि में चल रहा है और घटनाओं की निगरानी कर रहा है, तो applicationWillTerminate: इसे समाप्त होने पर कॉल किया जाएगा। जब ऐप निलंबित हो जाता है, तो यह नहीं होगा। आप iOS SDK 4 उपयोग करके आपके एप्लिकेशन को विकसित करने और बाद में, आप अभी भी अपने अनुप्रयोग के लिए तैयार रहना चाहिए बिना किसी पूर्व सूचना मारे जाने के लिए यहां तक ​​कि अगर

: "अनुप्रयोग समाप्ति" खंड में विवरण देखें। उपयोगकर्ता मल्टीटास्किंग UI का उपयोग करके स्पष्ट रूप से ऐप्स को मार सकता है। इसके अतिरिक्त, अगर स्मृति बाधित हो जाती है, तो सिस्टम अधिक कमरे बनाने के लिए स्मृति से ऐप्स को हटा सकता है। निलंबित ऐप्स को समाप्ति की अधिसूचना नहीं दी गई है, लेकिन यदि आपका ऐप वर्तमान में पृष्ठभूमि स्थिति (और निलंबित नहीं) में चल रहा है, तो सिस्टम आपके ऐप प्रतिनिधि के applicationWillTerminate: विधि को कॉल करता है। आपका ऐप इस विधि से अतिरिक्त पृष्ठभूमि निष्पादन समय का अनुरोध नहीं कर सकता है।

1

applicationDidEnterBackground - जब भी उपयोगकर्ता प्रेस घर बटन और आवेदन उस समय यह applicationDidEnterBackground विधि कॉल के समय पृष्ठभूमि में जाना होगा। जब भी उपयोगकर्ता होम बटन दबाकर या किसी अन्य एप्लिकेशन पर स्विच करके एप्लिकेशन को कम करता है तो उसे कॉल किया जाता है।

एप्लिकेशनWillTerminate - यह केवल तब कहा जाता है जब एप्लिकेशन की प्रक्रिया वास्तव में मारे जाती है। यही है, उपयोगकर्ता इसे कार्य स्विचर में लाल माइनस क्लोज़ बटन का उपयोग करके मारता है, या पृष्ठभूमि में सिस्टम स्वयं इसे मारता है (उदाहरण के लिए कम स्मृति स्थिति पर)। आपका ऐप इस विधि से अतिरिक्त पृष्ठभूमि निष्पादन समय का अनुरोध नहीं कर सकता है।

1

applicationDidEnterBackground - यह विधि तब कॉल की जाएगी जब उपयोगकर्ता होम बटन दबाकर पृष्ठभूमि में एप्लिकेशन सेट करता है।

एप्लिकेशनWillTerminate - यह विधि तब कॉल की जाएगी जब उपयोगकर्ता लाल मोड बटन दबाकर पृष्ठभूमि मोड में मौजूद ऐप को छोड़ देता है।

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