इसलिए मैंने एंड्रॉइड ओएस के लिए एक सेवा और गतिविधि लिखी है।एंड्रॉइड रिमोट अपवाद और सेवाएं
मेरी सेवा अपनी प्रक्रिया में चल रही है, इसलिए मेरी गतिविधियां और सेवा के बीच सभी संचार आईपीसी के माध्यम से होता है। मैं इसके लिए मानक एंड्रॉइड .aidl तंत्र का उपयोग करता हूं।
अभी तक सबकुछ ठीक काम करता है। हालांकि, एआईडीएल "रिमोटएक्सप्शन फेंकता" का उपयोग कर सभी विधि स्टब्स उत्पन्न करता है इसलिए मुझे उन्हें संभालना होगा।
मैंने पूरे एंड्रॉइड स्रोत कोड पर एक त्वरित grep किया और केवल तीन मामलों को पाया जहां यह अपवाद कभी फेंक दिया गया है। ये एक अलग सेवा में हैं जिनसे मैं कनेक्ट नहीं हूं।
मैंने सी-स्रोतों की भी जांच की क्योंकि सिद्धांत में रिमोटएक्सप्शन जेएनआई इंटरफ़ेस का उपयोग करके उत्पन्न किया जा सकता है .. कुछ भी नहीं हुआ।
मैं धारणा है कि हर किसी को सिर्फ इस तरह उन्हें संभालती है:
try {
mService.someMethodCall (someArguments);
} catch (RemoteException e) {
e.printStackTrace();
}
यह ठोस कोड नहीं है, और मैं अपने कोड आधार में कुछ इस तरह नहीं करना चाहते।
इसके अलावा: मैंने आईपीसी के माध्यम से रिमोटएक्सप्शन फेंकने की कोशिश की और मुझे जो कुछ मिला वह एक स्टैक-ट्रेस और एक सिस्टम लॉग संदेश था जो मुझे बताता है कि अपवाद अभी तक समर्थित नहीं हैं। मेरा आवेदन अपवाद और सेवाओं है कि
:-(अपवाद एक बहुत ही अजीब राज्य में समाप्त हो गया (आधे रास्ते काम) फेंक दिया सवाल कर रहे हैं कभी नहीं देखा था:
क्या ये अपवाद कभी फेंक दिया हो
क्या कभी किसी ने देखा इस तरह के एक कोशिश पकड़ ब्लॉक एक RemoteException पकड़ने गया है?
यह हो सकता है कि वे मौजूद नहीं है और है कि हम सिर्फ इसलिए कि "RemoteException फेंकता" उन लोगों के साथ निपटने के लिए मजबूर कर रहे हैं एआईडीएल कंपाइलर के अंदर मृत कोड या बाएं ओवर है?
अस्वीकरण: मैंने पूरे स्रोत-कोड को नहीं पढ़ा है। मैंने रिमोटएक्सप्शन की घटनाओं को खोजने के लिए जीआरपी का इस्तेमाल किया, इसलिए मैंने अलग-अलग व्हाइटस्पेस उपयोग के कारण कुछ याद किया होगा।
हाय टिम। क्या अच्छा जवाब है! मेरी सेवा एक अलग प्रक्रिया में चल रही थी, और मैंने तनाव परीक्षण के दौरान यहां और वहां DeadObjectExceptions को देखा है। वैसे भी जब मैंने खोल का उपयोग किया और सेवा प्रक्रिया को मार दिया, जबकि एक बाध्य आवेदन चल रहा था। DeadObjectException हमेशा मेरी todo-list पर रहा है। अब जब मुझे पता है कि वे केवल रिमोटएक्सप्शन के उप-वर्ग हैं, मुझे पता है कि क्या करना है .. आपको बहुत धन्यवाद। अगर कोई और भी अंतर्दृष्टिपूर्ण होता है तो मैं एक और दिन के लिए खुला प्रश्न छोड़ देता हूं! चीयर्स, निल्स –
@Nils Pipenbrinck Glad मैं मदद कर सकता था। साथ ही, अब आपने मेरा जवाब स्वीकार कर लिया है, क्या मैं आपको बक्षीस देने के लिए भी परेशान कर सकता हूं? –
मुझे पता नहीं था कि आपको इसे पुराना है। मैंने सोचा कि यह उत्तर से जुड़ा हुआ है .. :-) –