मान लें कि एक ऐसा एप्लिकेशन है जो खाता प्रबंधक में खाता बनाता है। उपयोगकर्ता, थोड़ी देर के लिए इस आवेदन के काफी जटिल गतिविधि ग्राफ़ की पड़ताल तो Android सेटिंग में Accounts and Sync
को जाता है, में (अभी भी एक अन्य उपयोगकर्ता के रूप में किया जा रहा Accounts and Sync
।एंड्रॉइड एप्लिकेशन को पर्यावरण में महत्वपूर्ण बदलावों का जवाब कैसे देना चाहिए?
मैं LOGIN_ACCOUNTS_CHANGED
प्रसारण के लिए एक रिसीवर को परिभाषित किया है खाते और संकेत को हटा और मैं सभी सेवाओं को गर्व से बंद करने में सक्षम हूं। लेकिन गतिविधियां अभी भी हैं, उनके शीर्षलेख में पहले उपयोगकर्ता का नाम (यूआई कई तरीकों से गड़बड़ हो जाता है, लेकिन यह सबसे स्पष्ट है)।
तो सवाल यह है कि इन अनाथ गतिविधियों के बारे में क्या किया जाना चाहिए?
- मैं
clearTaskOnLaunch
जैसे कुछ का उपयोग कर सकता हूं, लेकिन परिवर्तन होने पर सभी गतिविधियां पृष्ठभूमि में होती हैं। - साझा किए गए संदर्भों में ध्वज सेट करें और प्रत्येक गतिविधि के
onResume()
में चेक करें, फिर आवश्यक होने परclearTask
गतिविधि लॉन्च करें? बहुत ही गन्दा। - सबसे अच्छा विकल्प मैं सभी गतिविधियों को मारने के लिए
android.os.Process.killProcess(android.os.Process.myPid())
का उपयोग करने में सक्षम था। यह बहुत सुंदर नहीं है, लेकिन काम पूरा हो जाता है। एकमात्र साइड इफेक्ट यह है कि गतिविधि स्टैक अभी भी वहां है, जब स्पष्ट इतिहास के साथ सबसे उचित बातLAUNCHER
गतिविधि से शुरू होती है।
तो, वर्णित परिदृश्य का जवाब देने का सबसे अच्छा तरीका क्या होगा?
Process.killProcess() का उपयोग करना हमेशा एक हैक है, कभी भी सही समाधान नहीं है। – hackbod
मैं सहमत हूं, इसलिए सवाल है। – Ash