2012-07-10 26 views
8

क्या मुझे पता चलेगा कि गतिविधि को नष्ट कर दिया गया है या नहीं? वर्तमान में, मैं निम्नलिखित तरीके से उपयोग कर रहा हूं।यह जानने का सही तरीका है कि कोई गतिविधि नष्ट हो गई है

private volatile boolean isOnDestroyCalled = false; 

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    isOnDestroyCalled = true; 
} 

public boolean isOnDestroyCalled() { 
    return this.isOnDestroyCalled; 
} 

क्या उपरोक्त से बेहतर कोई अन्य तरीका है?

+0

मैं आपकी समस्या को पूरी तरह समझ नहीं पा रहा हूं, आप इसे कब जानना चाहते हैं ?, क्या आप गतिविधि को नष्ट कर रहे हैं या कुछ और नष्ट हो रहा है? आप हमेशा फिनिश() को ट्रिगर कर सकते हैं; इसे नष्ट करने के लिए। यहां कुछ मदद http://developer.android.com/reference/android/app/Activity.html – najk

+2

मुझे इसे स्वयं जानना आवश्यक था क्योंकि मेरे पास एक एसिंक कार्य था जो गतिविधि पर कॉलबैक ट्रिगर करता था, जो नष्ट हो सकता था इस बीच में। मेरा कामकाज गतिविधि में कॉलबैक का संदर्भ रखना था, कॉलबैक में गतिविधि का संदर्भ था, और जब गतिविधि को नष्ट किया जा रहा था तो कॉलबैक में रेफरी को रद्द कर दिया गया था, इसलिए कॉलबैक शून्य होने पर कुछ भी नहीं करता है। – qix

+0

@Linus अब तक की सबसे अच्छी तकनीक को बनाए रखा उदाहरण खंड का उपयोग करना है: http://stackoverflow.com/questions/8417885/android-fragments-retaining-an-asynctask-during-screen-rotation-or-configuratio –

उत्तर

3

यह काम करेगा, लेकिन कभी-कभी ओएस जायेगा और आपके आवेदन को बंद कर देगा यदि यह निष्क्रिय है जब अन्य अनुप्रयोगों को प्राथमिकता की आवश्यकता होती है। निश्चित रूप से मुझे पता है कि जब ऐसा होता है तो वेरिएबल कम हो जाएंगे, भले ही यह आपके मामले में अस्थिरता का उपयोग न करे जो मुख्य स्मृति में जाता है। लेकिन यह सुनिश्चित करने का एक तरीका है कि आपको सही मूल्य मिल जाए, इसे साझा किए गए संदर्भों में सहेजना है।

+2

ऐसा लगता है कि यह एक अच्छा दृष्टिकोण नहीं है! –

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

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