2015-11-02 4 views
20

निरीक्षण: एंड्रॉइड एप्लिकेशन की मैन्युअल रूप से बदलती अनुमति इस एप्लिकेशन के लिए सभी प्रक्रियाओं को मार डाला।एंड्रॉइड marshmallow गतिशील अनुमति परिवर्तन सभी आवेदन प्रक्रियाओं को मारता है

प्रक्रिया: सेटिंग्स पर जाएं-> ऐप्स एप्लिकेशन और अनुमतियां चुनें। अनुमतियों में से एक को अक्षम करें। डिवाइस: नेक्सस 6 डिवाइस एंड्रॉइड मार्शमॉलो 6.0

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

क्या यह अपेक्षित व्यवहार सभी एंड्रॉइड 6.0+ उपकरणों पर गतिशील अनुमतियों के साथ है? UI मल्टीटास्क मेनू से इसे स्वाइप करके एप्लिकेशन प्रक्रिया को मारने के दौरान व्यवहार में कोई अंतर क्यों है?

+0

यदि आपने इस समस्या को संभाला है, तो क्या आप समझा सकते हैं कि आपने यह कैसे किया है? – MiloRambaldi

उत्तर

12

यह है कि, अनुमति बदलने के बाद लॉन्च होने पर एप्लिकेशन सही तरीके से काम करने के लिए, लॉन्चर गतिविधि शुरू होने पर निर्भरता नहीं हो सकती है।

यह वर्षों से मामला रहा है। उदाहरण के लिए, यदि आपकी प्रक्रिया कम स्मृति स्थितियों के कारण समाप्त हो जाती है, लेकिन उपयोगकर्ता हाल ही में (पिछले आधे घंटे के भीतर) कहता है, जब उपयोगकर्ता ओवरव्यू स्क्रीन पर जाता है (जिसे आप "UI बहु-कार्य कहते हैं मेनू ") और आपके ऐप पर वापस जाने के लिए चला जाता है, नियंत्रण आखिरी बार जो भी गतिविधि था (यानी, बैक स्टैक के शीर्ष पर था) के एक ताजा उदाहरण पर वापस आ जाएगा।

क्या यह एंड्रॉइड 6.0+ उपकरणों पर गतिशील अनुमतियों के साथ यह अपेक्षित व्यवहार है?

हां। यह पिछले सभी एंड्रॉइड डिवाइसों में भी व्यवहार की उम्मीद है, अन्य मामलों के लिए जहां आपकी प्रक्रिया समाप्त हो गई थी लेकिन आपका कार्य अभी भी बकाया और हालिया है।

यूआई मल्टीटास्क मेनू से इसे स्वाइप करके एप्लिकेशन प्रक्रिया को मारने से व्यवहार में कोई अंतर क्यों होता है?

ओवरव्यू स्क्रीन से किसी कार्य को स्वाइप करने से उस कार्य को हटा दिया जाता है। इसलिए, जब उपयोगकर्ता आपके ऐप पर लौटने की कोशिश करता है तो उस कार्य को पुन: उपयोग नहीं किया जा सकता है (उदा।, होम स्क्रीन लॉन्चर आइकन के माध्यम से)।

+4

मुझे समझ में नहीं आता कि वे कार्य को अनुमतियों पर क्यों बदलते हैं। प्रक्रिया को क्यों न मारें और कार्य को हटा दें? यह हमें ऐप में हर जगह अनुमतियों की जांच करने के लिए मजबूर करता है, जबकि हमारे पास अनुरोध करने के लिए केवल एक प्रविष्टि बिंदु हो सकता है (कम से कम महत्वपूर्ण)। क्या आपको पता है कि अनुमति बदलने के बाद एक नया कार्य मजबूर करने का कोई तरीका है या नहीं? मैंने विभिन्न गतिविधि कॉन्फ़िगरेशन को मिश्रित करने का प्रयास किया लेकिन मैं खराब असफल रहा ... – tbruyelle

+6

@tbruyelle: "क्या आपको पता है कि अनुमति बदलने के बाद कोई नया कार्य लागू करने का कोई तरीका है?" - अनुमति परिवर्तन के लिए कुछ भी विशिष्ट नहीं है। यदि कुछ और नहीं है, तो यह देखने के लिए जांचें कि क्या आप प्रत्येक 'ऑनक्रेट() '(शायद एक सामान्य गतिविधि बेस क्लास के माध्यम से) के शीर्ष पर अनुमतियां रखते हैं, और यदि आप कुछ महत्वपूर्ण याद कर रहे हैं, तो' एंटेंट 'के साथ अपनी एंट्री पॉइंट गतिविधि शुरू करें 'कार्य को साफ़ करने के लिए झंडे, इसलिए आपके' अनुरोध पैरामिशन() 'कॉल को केंद्रीय रूप से संभाला जाता है। – CommonsWare

+0

धन्यवाद मैं ऐसा कुछ डिजाइन कर रहा था, मैं आगे बढ़ूंगा। – tbruyelle

1

मुझे लगता है कि हत्या के लिए तर्क निम्नलिखित है। यह समवर्ती के बारे में है। सिस्टम 3 संभावित दृष्टिकोणों में से एक चुन सकता है:

  1. चुपचाप अनुमति को निरस्त करने के लिए। ऐप के पास इसकी जांच करने का कोई तरीका नहीं है, क्योंकि किसी भी 'चेक' और 'उपयोग' क्षणों के बीच अभी भी एक रद्द हो सकता है।

  2. ऐप को सूचित करने के लिए। इस प्रकार की अधिसूचना को ऐप द्वारा स्वीकार किया जाना चाहिए, जिसका अर्थ है कि इसका कोई थ्रेड अक्षम एपीआई तक पहुंचने वाला नहीं है और सिस्टम अब एपीआई को बंद कर सकता है। यह सुंदर है, लेकिन अनुभवहीन प्रोग्रामर के लिए कार्यक्रम करना मुश्किल है।

  3. ऐप को मारने के लिए, सुनिश्चित करें कि अगली बार जब यह शुरू होता है तो यह ठीक से महसूस करेगा कि अनुमति रद्द कर दी गई थी।

संबंधित मुद्दे