2016-07-13 6 views
5

मैं एक ऐप विकसित कर रहा हूं जो दुर्घटना के मामले में, क्रैश के समय के साथ कुछ डेटा सहेजने की आवश्यकता है। अब, मैं इस तरह OnDestroy में डेटा() की बचत कर रहा हूँ:गतिविधि क्रैश लाइफसाइकिल विधि - एंड्रॉइड

@Override 
protected void onDestroy() { 
    saveState(); 
    super.onDestroy(); 
} 

लेकिन जब भी मैं उद्देश्य पर मेरे ऐप दुर्घटना, OnDestroy() कहा जाता है नहीं है और अपने डेटा सहेजा नहीं गया है।

मेरा सवाल है, मैं क्रैश पर अपना डेटा कैसे सहेज सकता हूं? मुझे कौन सा दृष्टिकोण लेना चाहिए? क्योंकि मुझे क्रैश के समय को भी सहेजने की आवश्यकता है, यह अनिवार्य है।

+0

देखें http://stackoverflow.com/a/8516056/3981656 –

उत्तर

4

UncaughtExceptionHandler क्रैश को पकड़ने के लिए एकदम सही है।

+0

मैंने इस हैंडलर को मेरे कोड में कार्यान्वित किया और यह एक आकर्षण की तरह काम करता है! धन्यवाद –

2

दुर्भाग्यवश, आप onDestroy या onStop विधियों के माध्यम से अचानक क्रैश का पता नहीं लगा सकते हैं। आपके विकल्प हैं:

  1. प्रयास-पकड़ ब्लॉक का उपयोग करें। कोशिश ब्लॉक में दुर्घटना के संभावित स्थानों को लपेटें और पकड़ ब्लॉक में अपवादों को पकड़ें, फिर आप ऐप को गहराई से बंद कर सकते हैं।

  2. अतिसंवेदनशील प्लेस पर प्रयास-पकड़ ब्लॉक लागू करें। फिर, आप अपने ऐप में crashlytics एकीकृत कर सकते हैं और कैच ब्लॉक में क्रैशलीटिक्स के अपवाद लॉग कर सकते हैं। ऐप को कुछ उपयोगकर्ताओं द्वारा और फिर क्रैशलीटिक्स एनालिटिक्स द्वारा उपयोग करने दें, आप उन स्थानों को देख सकते हैं जहां ऐप वास्तव में अधिकांश बार क्रैश हो रहा है।

  3. acra का उपयोग करें। यह अपवादों को पकड़ता है, बहुत सारे संदर्भ डेटा पुनर्प्राप्त करता है और उन्हें आपकी पसंद के बैकएंड पर भेजता है।

आप हमेशा पकड़ ब्लॉक में सिस्टम समय रिकॉर्ड कर सकते हैं और वहां अपना डेटा सहेज सकते हैं।

+0

आपके उत्तर के लिए धन्यवाद! मैं इसे लागू करने और अपनी पोस्ट अपडेट करने की कोशिश करूंगा –

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