2012-04-30 20 views
6

मुझे पता है कि जब एप्लिकेशन बंद हो चाहते हैं, क्योंकि मैं एक डाटाबेस को मिटाने के लिए जब उपयोगकर्ता बंद एप्लिकेशन, बस पल में उपयोगकर्ता एप्लिकेशन बंद कर जब SQLite को मिटाने के लिए सही समय है की जरूरत है डेटाबेस, मैं इसका पता कैसे लगा सकता हूं?, का पता लगाने के लिए जब आवेदन बंद कर दिया है

+2

** दस्तावेज़ पढ़ें: ** http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle –

+3

हाँ, मुझे यह पता है, लेकिन सवाल यह है कि मुझे पता होना चाहिए कि कब कुल आवेदन बंद है, जब कोई गतिविधि बंद नहीं होती है। – JLouis

+0

आप जो चाहते हैं असंभव है। आपकी प्रक्रिया किसी भी समय उपयोगकर्ता या ओएस द्वारा समाप्त की जा सकती है, और आपको इसकी अधिसूचना नहीं है। – CommonsWare

उत्तर

7

मान लीजिए कि आप finish() अपनी मुख्य गतिविधि नहीं देखते हैं, तो onDestroy() के अंदर अपना डेटाबेस साफ़ करना उस गतिविधि का तरीका हो सकता है जो आप पूरा करना चाहते हैं। जैसा टिप्पणियों में बताया गया है, http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle देखें। जब प्रक्रिया समग्र मर जाता है, यह मृत, अपने कोड अर्थ अब नहीं चल रहा है है -

+0

ऑनडेस्ट्राय() कई बार काम नहीं करता प्रतीत होता है, एंड्रॉइड बस ऑनस्टरी() विधि को निष्पादित करता है। – San

+2

'ऑनपॉज़() 'का उपयोग करके प्रोत्साहित किया जाता है, क्योंकि' ऑनडेस्ट्राय()' निष्पादन 100% विश्वसनीय नहीं है (यह सिस्टम संसाधनों पर भेजता है) –

15

यह एक त्रुटिपूर्ण डिजाइन विचार है, जो प्रणाली का एक गलतफहमी को दर्शाता है।

आप कुछ ट्रैकिंग कर सकते हैं और एक शिष्टाचार के रूप सफाई कर पिछले onDestory() 'घ गतिविधि है, लेकिन यह न मानें कि यह हमेशा वास्तव में होंगे (विधि हमेशा कहा जाता है नहीं है)। यदि एक पुरानी प्रतिलिपि रखना एक समस्या है, तो इसे अगले भाग पर साफ करें।

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

और एक मिनट गलती एक सुरक्षा तंत्र के लिए सफाई के लिए नहीं करते हैं, फ़ाइल के रूप में होती है, जबकि अपने अनुप्रयोग चल रहा है, और अपने अनुप्रयोग ही अनपेक्षित रूप से समाप्त करता है, तो बने रहेंगे।

+0

"यदि कोई पुरानी प्रतिलिपि है तो समस्या है, इसे अगले भाग पर साफ़ करें।" - धन्यवाद, अच्छा सुझाव – Nactus