2011-02-07 14 views
41

खत्म नहीं करता है, मैं finish() पर कॉल कर रहा हूं लेकिन मेरी गतिविधि चल रही है।एंड्रॉइड गतिविधि पर कॉलिंग फिनिश() वास्तव में

मेरे पास एक गतिविधि है जो मुख्य गतिविधि स्क्रीन से मेनू द्वारा बुलाई जाती है। यदि सूची खाली है यह टोस्ट अप डालता

// Make sure there are some events in the list. 
    if (theEventArrayList.isEmpty()){ 
     Toast.makeText(this, "Event List is empty", Toast.LENGTH_LONG).show(); 
     finish(); 
    } 
    SummarizeCurrentEvent(); 
    graphEvents(); 

, और मैं finish() को फोन पर ब्रेकपाइंट सेट कर सकते हैं: मेरी गतिविधि के onCreate() विधि में मैं निम्नलिखित कोड टुकड़ा है। अगर मैं डीबगर में उस से कदम उठाता हूं तो यह सीधे SummarizeCurrentEvent() पर जाता है। मैंने सोचा कि finish() गतिविधि से बाहर निकल जाएगा। क्या यह मामला नही है? इस विधि के बारे में मुझे और जानकारी कहां मिल सकती है?

उत्तर

65

आपको कथन finish के बाद कथन देना चाहिए, क्योंकि finish नामक विधि पूरी तरह से निष्पादित की जाएगी। about finish() in android

+1

'SummarizeCurrentEvent() को रखना बेहतर नहीं होगा; graphEvents(); ... '' else {} 'ब्लॉक में? –

+0

@ प्रतिबंध-जियोइंजिनियरिंग आप संभावित रूप से एकाधिक '' if (...) {finish() कर सकते हैं; वापसी; } ''। मुझे लगता है कि कोड होने पर स्पष्ट रूप से '' खत्म() '' ** और ** '' '' '' '' '' '' '' '' 'है। –

0

समाप्त गतिविधि को खत्म करता है, लेकिन यह यूआई इंटरैक्शन करने के लिए मुख्य पाश पर निर्भर करता है। यूआई लूप रन तक आपको इंतजार करना होगा, जो onCreate से वापस आने के बाद होता है।

5

खत्म() सिर्फ गतिविधि यह खत्म करने के लिए, उदाहरण के लिए क्या करने की जरूरत करने के लिए कहता है:

भी, इस सवाल को देखते हैं। शट डाउन, ऑन पॉज़ पर कॉल करें, माता-पिता को रिपोर्ट परिणाम दें, आदि। यह बाहर निकलने() कॉल या कुछ भी नहीं करता है।

आपको फिनिश() कॉल के बाद वापस जाना चाहिए।

3

अन्य उत्तर को जोड़ना, आप अभी भी मई(Re)onStart, onResume और लागू की है।

मैं यह कहता हूं क्योंकि निम्न लिंक में, एक सारणी है जो कहती है कि एक गतिविधि को मारने के लिए, पहले इसे रोकें और ऑनस्ट्रोय पर रोकें (और शायद गारंटी नहीं है)।

संदर्भ Activity

0

इस मामले में जहां try...catch बयान इस्तेमाल किया जाना चाहिए है।

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    try { 
     //...some initialization... 

     // Make sure there are some events in the list. 
     if (theEventArrayList.isEmpty()){ 
      throw new Exception("Event List is empty"); 
     } 
     SummarizeCurrentEvent(); 
     graphEvents(); 
    } catch (Exception e) { 
     Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show(); 
     finish(); 
    } 
} 
संबंधित मुद्दे