मेरे आवेदन में, मेरे पास एक सुविधा है जो उपयोगकर्ता को व्यक्तिगत ऐप सेटिंग्स के समूह को अपडेट करने की अनुमति देती है, जिसे बूलियन ध्वज द्वारा ट्रिगर किया जाता है जिसे useNew कहा जाता है। एक रुकावट की संभावना को ध्यान में रखते हुए, मैं useNew को गलत पर रीसेट करता हूं यदि a) उपयोगकर्ता ऑपरेशन को रद्द कर देता है या b) इस तर्क को संसाधित करने वाली गतिविधि अप्रत्याशित रूप से समाप्त हो जाती है। मैंने रीसेट लॉजिक को ऑनस्टॉप में रखा है क्योंकि एंड्रॉइड निर्दिष्ट करता है कि, हनीकॉम्ब के बाद, यह आखिरी जीवनचक्र घटना है जिसे कहा जाने की गारंटी है: https://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

यह एक को छोड़कर सभी परिस्थितियों में ठीक काम कर रहा है। यदि मैं स्टूडियो में ऐप चलाता हूं और फिर, ऐप अभी भी खुला है, तो इसे स्टूडियो से फिर से चलाने का प्रयास करें, मुझे यह चेतावनी संदेश मिलता है कि यह मेरे सत्र को मार देगा। यहां छवि विवरण दर्ज करें

"रीस्टार्ट ऐप" को चुनने से मेरी गतिविधि बिना ऑनस्टॉप कॉल किए बंद हो जाती है। मेरा ध्वज कभी रीसेट नहीं होता है और अगले ऐप चलाने पर, तर्क विफल हो जाता है।

मेरा प्रश्न: क्या यह व्यवहार स्टूडियो में एक विलक्षण घटना है, या क्या यह संभव है कि ऑनस्टॉप को दुर्लभ परिस्थितियों में छोड़ दिया जाए?

0
deMouser 12 जुलाई 2017, 23:48

2 जवाब

सबसे बढ़िया उत्तर

क्या आप सुनिश्चित हैं कि ऑनस्टॉप को नहीं बुलाया जा रहा है? क्या हो रहा है कि ऑनस्टॉप को कॉल किया जा रहा है लेकिन संबंधित कोड नहीं चलाया जा रहा है। एंड्रॉइड स्टूडियो में जब आप ऐप को पुनरारंभ करने के लिए मजबूर करते हैं, तो यह तुरंत आपके एप्लिकेशन को समाप्त कर देता है।

Google दस्तावेज़ से, ऑनस्टॉप एक हत्या योग्य विधि है।

[हत्या योग्य विधियों] के लिए, उस विधि के बाद गतिविधि की मेजबानी करने वाली प्रक्रिया को सिस्टम द्वारा किसी भी समय इसके कोड की दूसरी पंक्ति निष्पादित किए बिना मार दिया जा सकता है।

इसके बजाय, कोई भी कोड जो डेटा को बनाए रखता है (अर्थात उपयोगकर्ता डेटा को स्वतः सहेजना), उसे ऑनपॉज़ () में रखा जाना चाहिए।

भंडारण में किसी भी स्थायी डेटा (जैसे उपयोगकर्ता संपादन) को लिखने के लिए आपको ऑनपॉज़ () विधि का उपयोग करना चाहिए।

0
Ray Li 13 जुलाई 2017, 00:45

जब एंड्रॉइड स्टूडियो ऐप को पुनरारंभ करने के लिए मारता है, तो कार्रवाई जबरदस्त होती है, इसलिए यह किसी भी जीवनचक्र शब्दार्थ का पालन नहीं करता है। यह "सामान्य" तंत्र से नहीं गुजरता है जो Activity जीवनचक्र स्थिति को संचालित करता है। इसे अपने ऐप को होस्ट करने की प्रक्रिया के लिए kill -9 चलाने जैसा सोचें।

0
Larry Schiefer 13 जुलाई 2017, 00:43