2012-12-18 11 views
9

में ऑनडस्ट्राय() का उपयोग यदि जावा कचरा संग्रह प्रदान करता है, तो गतिविधि लाइफसाइकिल में ऑनस्ट्रोय() की आवश्यकता क्या है?एंड्रॉइड

+1

चेक करें: [वास्तव में क्या करता है OnDestroy() को नष्ट?] [1] [1]: http://stackoverflow.com/a/4981927/556975 आशा है कि यह आप में मदद करता है। धन्यवाद। –

उत्तर

11

ऑन डेस्ट्रॉय: आपकी गतिविधि से पहले आपको प्राप्त अंतिम कॉल नष्ट हो गया है। यह तब हो सकता है, क्योंकि या तो गतिविधि खत्म (किसी उस पर खत्म() कहा जाता है, या स्थान बचाने के लिए, क्योंकि इस प्रणाली अस्थायी रूप से गतिविधि के इस उदाहरण को नष्ट कर रहा है।

यहाँ उदाहरण है ......

public void onDestroy() { 

    super.onDestroy(); 

} 
+7

कोई भी 'ऑनस्ट्रोय' के अंदर 'फिनिश()' क्यों कॉल करेगा, इसका कोई मतलब नहीं है। – xmen

+1

आप ऑनस्ट्राय() पर भरोसा नहीं कर सकते हैं। "ऐसी परिस्थितियां हैं जहां सिस्टम इस विधि (या किसी अन्य) को कॉल किए बिना गतिविधि की होस्टिंग प्रक्रिया को आसानी से मार देगा, इसलिए इसे उन चीजों को करने के लिए उपयोग नहीं किया जाना चाहिए जो प्रक्रिया समाप्त होने के बाद आसपास रहने के इरादे से हैं।" http://developer.android.com/reference/android/app/Activity.html#onDestroy() – Robert

0

OnDestroy है यह बताने के लिए अपने अनुप्रयोग के लिए एक अंतिम चीजों को साफ करने से पहले गतिविधि को नष्ट कर दिया हो जाता है

अनुच्छेद Exit Button in Android

1

onDestroy() एक विधि ढांचे द्वारा कहा जाता है जब अपनी गतिविधि है मौका है बंद हो रहा हैं। इसे आपकी गतिविधि को किसी भी शट-डाउन ऑपरेशंस करने की अनुमति देने के लिए कहा जाता है, जो वह करना चाहता है। विधि में कचरा संग्रह के साथ वास्तव में कुछ भी नहीं है (हालांकि आपके शट-डाउन ऑपरेशंस — यदि — में अतिरिक्त संसाधनों को जारी करना शामिल हो सकता है जिन्हें gc'ed किया जा सकता है)। विशेष रूप से, इसका सी ++ विनाशकों के साथ कुछ लेना देना नहीं है (इसके नाम के बावजूद)।

यदि आपके पास कोई शट-डाउन ऑपरेशन नहीं है, तो आपको इसे ओवरराइड करने की आवश्यकता नहीं है। आधार वर्ग अनिवार्य रूप से कुछ भी नहीं करता है।

0

यह आपके प्रोग्राम को क्लीनअप संसाधन (थ्रेड कहने) जैसी चीजों को करने का मौका देता है ताकि वे संबंधित एप्लिकेशन को प्रदूषित न करें। यदि आपके पास इसके लिए कोई उपयोग नहीं है, तो इसे ओवरराइड न करें।

देखें: onDestroy()-Android Reference

1

ओएस का फैसला करता है जब चीजें "चले जाओ।" ऑनडेस्ट्रॉय आपके एप को गतिविधि खत्म होने से पहले चीजों को साफ करने का अंतिम मौका देने के लिए है, लेकिन इसका मतलब यह नहीं है कि गतिविधि वास्तव में जीसीड होगी। यहां एक अच्छा article है जो मैं लोगों को पढ़ने के लिए अनुशंसा करता हूं जो निकास बटन बनाने से संबंधित हैं। हालांकि यह बिल्कुल ठीक नहीं है कि आपने क्या पूछा है, अवधारणाएं आपको यह समझने में मदद करेंगी कि क्या हो रहा है।

0

ऑनस्ट्रोय को तब कहा जा सकता है जब कोई गतिविधि नष्ट हो जाती है, लेकिन आप उस पर भरोसा नहीं कर सकते हैं। ऐसे परिस्थितियां हैं जहां सिस्टम इस विधि (या किसी अन्य) को कॉल किए बिना गतिविधि की होस्टिंग प्रक्रिया को आसानी से मार देगा, इसलिए यह प्रक्रियाओं को दूर करने के बाद आसपास रहने के इरादे से चीजों को करने के लिए उपयोग नहीं किया जाना चाहिए।

देखें: http://developer.android.com/reference/android/app/Activity.html#onDestroy()

1

आप प्रोग्राम को अंतिम रूप देने के लिएDestroy() पर उपयोग कर सकते हैं। मैंने सर्वर को यह बताने के लिए कोड कोड में इसका उपयोग किया है कि क्लाइंट सर्वर पर अपनी सॉकेट बंद कर रहा है, इसलिए मैं सर्वर को सर्वर के अंत में सूचित कर सकता हूं कि क्लाइंट डिस्कनेक्ट हो गया है।

ग्राहक:

... 
protected void onDestroy(){ 
    super.onDestroy(); 
    if(connected) { 
     clientMessage.println("exit"); 
     clientMessage.close(); 
     try { 
      socket.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
    finish(); 
} 
... 

सर्वर:

... 
while (connected) { 
    input = clientMessage.readLine(); 
    if ("exit".equals(input)){ 
     break; 
    } 
    ... 
} 
...