बदले बिना handleUncaughtException ओवरराइड करने के लिए मैं this सवाल कुछ समय Stackoverflow
पर वापस पूछा, जवाब मेरे लिए काम किया, यह handleUncaughtException
ओवरराइड करता है, मैं अपवाद बचाने के लिए और डिफ़ॉल्ट Unfortunately app has stopped working
फेंकता है, लेकिन जब मैं अपने अनुप्रयोग में इस एकीकृत , मुझे एक समस्या का सामना करना पड़ रहा है।कैसे अपने functionallity
यह वह जवाब है जो मुझे मिला।
private Thread.UncaughtExceptionHandler defaultExceptionHandler;
public void registerCrash(){
defaultExceptionHandler = Thread.getDefaultUncaughtExceptionHandler();
Thread.setDefaultUncaughtExceptionHandler (new Thread.UncaughtExceptionHandler(){
@Override
public void uncaughtException (Thread thread, Throwable e){
handleUncaughtException (thread, e);
if(defaultExceptionHandler != null){
defaultExceptionHandler.uncaughtException(thread, e);
}
}
});
}
यह क्या करता है, पहले यह handleUncaughtException (thread, e);
मैं इस विधि में क्रैश लॉग को बचाने के लिए चला जाता है, तो यह इस लाइन पढ़ता
if(defaultExceptionHandler != null){
defaultExceptionHandler.uncaughtException(thread, e);
}
यहाँ
हम न आया हुआ अपवाद फिर से है, तो यह जाता है पहले करने के लिए फेंक लाइन फिर से, और फिर अपवाद बचाता है, और यह लूप में चला जाता है, और एप्लिकेशन प्रतिक्रिया नहीं दे रहा है।
जो मैं चाहता हूं वह क्रैश लॉग को सहेजना है, और फिर उपयोगकर्ता को डिफ़ॉल्ट Unfortunate
संदेश दिखाएं।
संपादित
ऐप्स लॉन्च पर यह इस पढ़ता है;
defaultExceptionHandler = Thread.getDefaultUncaughtExceptionHandler();
अनुप्रयोग क्रैश हो जाता है, यह इन पंक्तियों
Thread.setDefaultUncaughtExceptionHandler (new Thread.UncaughtExceptionHandler(){
@Override
public void uncaughtException (Thread thread, Throwable e){
handleUncaughtException (thread, e); //Custom Method
if(defaultExceptionHandler != null){
defaultExceptionHandler.uncaughtException(thread, e);
}
}
पढ़ता है तो यह पहले handleUncaughtException()
वहाँ मैं कस्टम कार्यान्वयन प्रदान की है करने के लिए हो जाता है, तो यह इस करने के लिए चला जाता है,
if(defaultExceptionHandler != null){
defaultExceptionHandler.uncaughtException(thread, e);
}
defaultExceptionHandler
कभी शून्य नहीं है; तो यह कई दुर्घटनाओं के मामले में एक पाश में चला जाता है।
मैंने वहां count
जोड़ने का प्रयास किया है, लेकिन यह हर बार 0
था।
'तो यह कई के मामले में एक पाश में चला जाता है दुर्घटनाओं 'क्या आप एक परिदृश्य को इंगित कर सकते हैं? क्या होने का एक और अपवाद होता है? – azizbekian
@azizbekian: मैं इसके पुनर्निर्माण के लिए कदमों को खोजने में असमर्थ था। यह हर बार नहीं होता है, लेकिन कभी-कभी – Kirmani88
डिफ़ॉल्ट अपवाद हैडलर विधि क्या है। क्या यह आपकी खुद की विधि है? यदि हां उस विधि कोड को पोस्ट करें। और पोस्ट हैंडल UncaughtException (थ्रेड, ई) विधि कोड भी –