2011-01-10 16 views
5

मेरा एप्लिकेशन कुछ अस्थायी फ़ाइलों को बनाता है जिन्हें मुझे अपने पूरे जीवन चक्र के दौरान चाहिए। मुझे अंततः उन फ़ाइलों का निपटान करने की ज़रूरत है, इसलिए वे डिवाइस पर जगह नहीं लेते हैं। मैंने सोचा कि जब एप्लिकेशन छोड़ता है तो मैं उन्हें हटा सकता हूं, लेकिन चूंकि मल्टीटास्किंग पेश की गई है, इसलिए जीवन चक्र उतना सरल नहीं है जितना कि यह होता था। मेरा मुख्य सवाल यह है: जब मेरा एप्लिकेशन पृष्ठभूमि में चलता है और बाद में मार जाता है, तो क्या यह applicationWillTerminate: प्राप्त करता है? या यह सिर्फ स्मृति से मिटा दिया गया है?पृष्ठभूमि में एप्लिकेशन की मौत होने पर सफाई कैसे करें?

जब एप्लिकेशन पृष्ठभूमि में चलता है तो मैं क्लीनअप नहीं कर सकता, क्योंकि इसे ऑपरेशन के बीच में पृष्ठभूमि में देखा जा सकता है और इसे अग्रभूमि पर वापस आने के बाद अस्थायी फ़ाइलों की आवश्यकता होगी। मुझे लगता है कि मैं स्टार्टअप पर फ़ाइलों को साफ़ कर सकता हूं, लेकिन मुझे applicationWillTerminate: व्यवहार में दिलचस्पी है।

+0

मुझे आईफोन 4 में गेम बनाने के दौरान भी वही समस्या हो रही थी। एप्लिकेशन को एप्लिकेशन प्राप्त नहीं हो रहा था: उपयोगकर्ता जब ऐप से बाहर निकलता है और कॉल को सहेजने में सक्षम नहीं होता उपयोगकर्ता की स्थिति लेकिन आपके मामले में मुझे नहीं लगता कि आपको स्मृति रिसाव के बारे में चिंता करने की ज़रूरत है क्योंकि अगर कोई पॉइंटर इंगित नहीं कर रहा है तो स्मृति साफ़ हो जाएगी और अस्थायी फ़ाइलें स्वचालित रूप से हटा दी जाएंगी – Robin

+0

वह अस्थायी फ़ाइलों के बारे में चिंतित है, स्मृति रिसाव नहीं। हालांकि, AFAIK, tmp फ़ोल्डर iTunes के साथ सिंक्रनाइज़ेशन के दौरान साफ़ किया गया है। –

उत्तर

5

नहीं, applicationWillTerminate: मल्टी-टास्किंग सक्षम आईओएस 4 डिवाइस पर नहीं कहा जाता है। जब आपका ऐप समाप्त हो जाता है तो आमतौर पर इसका मतलब है कि डिवाइस मेमोरी से बाहर हो रहा है, इसलिए भी कहा जाता है कि कोई बात नहीं है कि आपके पास कार्य को पूरा करने के लिए पर्याप्त मेमोरी उपलब्ध होगी।

ऐप्पल अनुशंसा करता है कि जब आपका ऐप पृष्ठभूमि में जाता है तो आप साफ़ करते हैं। यदि आपको कुछ सेकंड की आवश्यकता है तो आप ऐसा करने के लिए अतिरिक्त समय का अनुरोध कर सकते हैं (यह सभी अनुप्रयोगों के लिए खुले कुछ बहु-कार्य परिदृश्यों में से एक है)।

जब कार्य पूरा हो जाता है (जब भी होता है) या जब आवेदन शुरू होता है तो आपके अन्य विकल्प साफ-सफाई होंगे। मुझे लगता है कि अन्य क्रमपरिवर्तन हो सकते हैं ...

+0

एप्लिकेशन निकास पर सफाई मेरे लिए आसान हो गई होगी, लेकिन कोई अन्य विकल्प नहीं है, मैं ऑपरेशन समाप्त होने के बाद साफ़ कर दूंगा। धन्यवाद! – zoul

1

इंटरनेट कहता है, वह एप्लिकेशन WillTerminate: पृष्ठभूमि में एप्लिकेशन की मौत के दौरान नहीं कहा जाता है। दूसरा तरीका कुछ जानकारी (NSUserDefaults में, या तो) को सहेजना है, जो आपने खोले गए अस्थायी फाइलें हैं, और स्टार्टअप के बाद जांचें कि क्या उन फ़ाइलों को छोड़ दिया गया है, और उन्हें हटाएं। इसके अलावा, आप यह पता लगा सकते हैं कि आईओएस आपके एप्लिकेशन को कैसे मारता है (मुझे लगता है कि यह सिग्नल भेजकर किया जाता है, हालांकि मुझे यकीन नहीं है) और अपने ऐप में सिग्नल हैंडलर जोड़ें।

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