मैं किसी भी ध्यान में न आया अपवाद के माध्यम से अपने आवेदन में होते निपटने हूँ:मैं बिना किसी निष्कासन को संभालने के बाद ज़ोंबीफाइंग से अपने एप्लिकेशन को कैसे रोकूं?
Thread.setDefaultUncaughtExceptionHandler(this);
थे यह मेरा लांचर गतिविधि UncaughtExceptionListener को लागू है। मैं अपवाद को संभालता हूं और इसे अपने लॉग सर्वर पर भेजता हूं, ठीक है, हालांकि, मेरा आवेदन तब समाप्त नहीं होता है। जब तक घर या बैक बटन दबाया जाता है तब तक यह ज़ोंबी के साथ चलता है। अपवाद को संभालने के बाद मैं प्रक्रिया को कैसे मार सकता हूं?
संपादित
यहाँ एक परीक्षण और काम करने वाली गतिविधि न आया हुआ अपवाद है कि (धागा) के द्वारा पकड़ा जा करने के लिए और नियंत्रित किया फेंकता है। टोस्ट कभी पोस्ट नहीं किया जाता है और अपवाद लॉग होने के बाद प्रक्रिया ज़ोंबी जाती है।
class TestActivity extends Activity implements UncaughtExceptionListener {
@Override public void onCreate(Bundle icicle) {
super.onCreate(icicle);
Thread.setDefaultUncaughtExceptionHandler(this);
throw new RuntimeException("I'm a destuctive booger.");
setContentView(R.layout.activity_test);
}
@Override public void uncaughtException(Thread thread, Throwable toss) {
Log.e(TAG, "An uncaught exception has been recieved.", toss);
Toast.makeText(this, "Big Error", Toast.LENGTH_LONG).show();
}
}
हैंडलर विधि में 'फिनिश() 'कॉल करें। आप शायद उपयोगकर्ता को सूचित करने के लिए पॉपअप संवाद भी प्रदान करना चाहते हैं। – Squonk
@MisterSquonk, नहीं, मेरा संदर्भ बाहर निकाला गया है। मैंने शुरुआत में इसे एक महत्वपूर्ण त्रुटि संदेश टोस्ट किया था, लेकिन टोस्ट नहीं बनाएगा। मैंने फिर एक प्रसारण रिसीवर की कोशिश की और यह भी काम नहीं किया। – AedonEtLIRA
क्षमा करें, मुझे समझ में नहीं आता है। आप कहते हैं कि 'यह' आपका लॉन्चर 'गतिविधि' है, इसलिए यदि हैंडलर विधि' गतिविधि 'का हिस्सा है, तो इसे संभालने के लिए आपके पास' चल रहा 'गतिविधि होना चाहिए। तथ्य यह है कि 'गतिविधि'' संदर्भ 'का एक अप्रत्यक्ष उप-वर्ग है (ओओपी शर्तों में) एक' गतिविधि 'एक' संदर्भ 'है। – Squonk