2010-06-23 9 views
8

मिला है, मुझे अभी आईफोन एसडीके 4 मिला है और मैं पहले से काम कर रहा एक ऐप विकसित करने की कोशिश कर रहा हूं। इसलिए मैं दोनों -(void)applicationDidEnterBackground:(UIApplication *)application और - (void)applicationWillTerminate:(UIApplication *)applicationसिम्युलेटर 4.0 चलाने वाले आईफोन ऐप को सिगिल

लागू किया जब मैं सिम्युलेटर 4.0 में घर बटन क्लिक करें, यह ठीक से काम करने लगता है। ऐप -(void)applicationDidEnterBackground:(UIApplication *)application पर कॉल करता है और पृष्ठभूमि स्थिति में प्रवेश करता है ..

हालांकि, फिर मैं पृष्ठभूमि में चल रहे ऐप का पर्दाफाश करने के लिए होम बटन पर डबल क्लिक करता हूं, और इसे शून्य से साइन इन करने या बाहर निकलने के लिए नीचे दबाता हूं। "SIGKILL"

अलावा

, - (void)applicationWillTerminate:(UIApplication *)application कभी नहीं कहा जाता है: जब मैं ऋण चिह्न क्लिक करें, डिबगर

कार्यक्रम संकेत प्राप्त कहते हैं। क्या मुझे ओएस 4 पर काम करने के लिए कुछ करने की ज़रूरत है? या कम से कम कोई मुझे सिगकिल डीबग करने के तरीके पर इंगित कर सकता है। धन्यवाद।

उत्तर

13

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

यदि आप पृष्ठभूमि में चल रहे हैं (संगीत बजा रहे हैं या कुछ पृष्ठभूमि कार्यों को चला रहे हैं, उदाहरण के लिए) और उपयोगकर्ता मैन्युअल रूप से शून्य बटन दबाकर एप्लिकेशन को समाप्त कर देता है, तो तभी आपको वास्तव में -applicationWillTerminate: संदेश प्राप्त होगा। इसलिए, आपको अपने सभी राज्य/आदि को सहेजना होगा। इससे पहले कि आप -applicationDidEnterBackground: से वापस आएं।

+0

उत्तर के लिए धन्यवाद। उसका कुछ मतलब है। हालांकि, मुझे एक और मुद्दा भी है। जब -प्लिकेशंसडिएन्टरबैकग्राउंड: कहा जाता है, तो मैं NSUserDefaults का उपयोग करके ऐप की स्थिति को सहेजने का प्रयास करता हूं, लेकिन किसी कारण से मेरे मान वह नहीं हैं जो मैं ऐप को पुनरारंभ करने के बाद होने की उम्मीद कर रहा हूं। ओएस 4 में यह क्यों काम नहीं करेगा? – NickDK

+0

कभी नहीं ... मैं NSUserdefaults पर सिंक्रनाइज़ नहीं कर रहा था। – NickDK

2

यह उम्मीद की जा रही है कि मल्टीटास्किंग बार "लाल बंद बटन" मैक ओएस एक्स पर एक एप्लिकेशन छोड़ने के बल के बराबर है। यह दस्तावेज व्यवहार है। ऐप्पल आईओएस 4 के सामान्य उपयोगकर्ताओं को बस लॉन्च/उपयोग/डिमिस करने के लिए अपेक्षा करता है, जिन्हें प्रक्रियाओं या किसी भी चीज़ को समाप्त करने के मामले में नहीं सोचना चाहिए। सिस्टम इसका प्रबंधन करेगा।

बस आवेदन में किसी भी महत्वपूर्ण डेटा को सहेजना सुनिश्चित करें: willResignActive: या applicationWillEnterBackground। क्योंकि उसके बाद आप मारे जा सकते हैं जब स्मृति दबाव प्रणाली को साफ करने के लिए मजबूर करता है ... हिम तेंदुए ने उन ऐप्स के लिए एक समान व्यवहार पेश किया जो NSSupportsSuddenTermination कुंजी का उपयोग उनके Info.plist में करते हैं। एक ऐप मूल रूप से सिस्टम को बताता है कि यह समय-समय पर डेटा को थोड़ा सा बचाता है, ताकि जब यह पृष्ठभूमि में हो जाए तो ऐसा करने के लिए कुछ भी नहीं बचा है या बहुत कम है। बड़े मोनोलिथिक ऐप्स डेस्कटॉप ऐप्स के विपरीत ...

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