2012-12-20 14 views
5

में रुका हुआ है मैं एक बग मुझे लगता है कि जब गतिविधि के OnDestroy() विधि पीछे बटन दबाने के बाद कहा जाता है तब होता है विश्लेषण करने के लिए कोशिश कर रहा हूँ है मारता है। मैंने अपमानजनक कोड (ग्रहण का उपयोग करके) में ब्रेकपॉइंट लगाए हैं। डीबगर ब्रेकपॉइंट पर ऐप को रोकता है, लेकिन एंड्रॉइड सिस्टम भी ऐप को स्क्रीन से बाहर ले जाता है और फोन की होमस्क्रीन पर लौटता है। ऐप को लगभग 10 सेकंड तक रोका जाने के बाद, ऐप का थ्रेड एंड्रॉइड सिस्टम द्वारा नष्ट हो जाता है क्योंकि डीबगर अचानक डिस्कनेक्ट हो जाता है।कैसे OnDestroy() डिबग करने के लिए, Android सिस्टम एप्लिकेशन जबकि डिबगर

एंड्रॉइड सिस्टम को ऐसा करने से कैसे रोकें इस पर कोई विचार? मैं एप्लिकेशन जीवित रखने के लिए तो मैं डीबगर में कदम कर सकते हैं, चर को देखो, आदि

फोन एंड्रॉयड 2.3.5 चल रहा है की जरूरत है।

+4

नहीं जवाब आप के लिए देख रहे हैं, लेकिन android.util.Log –

+3

आप OnDestroy है कि आप एक डिबगर की जरूरत है पर्याप्त काम कर रहे हैं, जो पहले से ही एक समस्या है। –

+0

क्या आपने 'ऑनडेस्ट्राय()' विधि को ओवरराइड किया है? यदि नहीं, तो ऐसा करें, और वहां एक डीबग रोक दें, और सुनिश्चित करें कि यह 'super.OnDestroy() ' –

उत्तर

3

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

फोन एक संवाद कह ऐप्स प्रतिसाद नहीं है (फोर्स बंद या रुको) उभर कर आती है, रुको क्लिक न करें, बस इसे अकेला छोड़ दें। ऐसा लगता है कि प्रतीक्षा पर क्लिक करने से एप थ्रेड को मार दिया गया और डमी गतिविधि के लिए एक नया धागा बनाया गया।

0

आप super.onDestroy() पर एक ब्रेकपाइंट कोशिश कर सकते हैं, लेकिन मुझे लगता है कि आप एक ही भाग्य होगा। :(

एंड्रॉयड आप onDestroy में रहना दूँगी नहीं है, यह समय-समाप्त होगा, ताकि और अधिक तेजी से अपने शटडाउन पूरा करने की कोशिश onDestroy() केवल संसाधनों को मुक्त कराने के लिए बनाया गया है और हमेशा समाप्ति से पहले कहा जाता नहीं है,। डेटा कायम किया जाना चाहिए । onPause() या onStop() https://developer.android.com/training/basics/activity-lifecycle/stopping.html

परिशिष्ट:। अन्य विकल्प काम से कुछ के लिए एक पृष्ठभूमि सेवा का उपयोग शामिल है या मैन्युअल रूप से वापस बटन को संभालने के लिए अपने आप को और अधिक समय देने के लिए, लेकिन यह उपयोगकर्ता अनुभव पर नकारात्मक प्रभाव पड़ सकता है

http://www.stanford.edu/class/cs193a/03/

मेरे फोन से भेजे गए, मेरे अंगूठे को कुछ ढीला में कटौती करें।

+0

वास्तव में उत्तर नहीं दिया गया था कि क्या पूछा गया था। उन्होंने पूछा कि वह डीबग करने के लिए समय कैसे बढ़ा सकता है ... – WarrenFaith

+0

डीबगर डीस्ट्रॉय पर ऐप को रोकने का प्रयास कर रहा है, लेकिन एंड्रॉइड बस प्रक्रिया को रोक देगा। ऑनस्ट्राय से ऑन पर सबकुछ बढ़ाना, एक हैक का थोड़ा सा है, लेकिन विश्वसनीय रूप से काम करना चाहिए। – CodeShane