2011-09-29 25 views
8

एंड्रॉइड प्रलेखन को देखा और ऐसा प्रतीत होता है कि हमारे पास यह जानने की क्षमता नहीं है कि कोई ऐप बंद हो जाता है। चाहे वह उपयोगकर्ता द्वारा या स्वचालित रूप से ऑपरेटिंग सिस्टम द्वारा स्पष्ट रूप से किया गया हो।क्या आप ट्रैक कर सकते हैं जब एक एंड्रॉइड एप्लिकेशन समाप्त कर दिया गया है?

नीचे onTerminate() documentation है जो केवल नकली परिदृश्य में उपलब्ध है।

public void onTerminate() 

के बाद से: एपीआई स्तर 1

इस विधि नकल करते प्रक्रिया वातावरण में प्रयोग के लिए है। इसे किसी एंड्रॉइड डिवाइस, पर कभी भी नहीं बुलाया जाएगा जहां प्रक्रियाओं को आसानी से मार कर हटा दिया जाता है; कोई उपयोगकर्ता कोड (इस कॉलबैक सहित) को ऐसा करने पर निष्पादित किया जाता है।

क्या किसी के पास एप्लिकेशन को बंद करने पर रिपोर्ट करने के लिए कोई अन्य दृष्टिकोण है?

हमें अपने भविष्य के उत्पादन ऐप में अतिरिक्त कार्यक्षमता को शामिल करने की आवश्यकता होने पर हमें पायलट/उपयोगिता दृष्टिकोण से जानने की आवश्यकता है।

+0

तुम क्या आप जब आवेदन "समाप्त" है क्या करना चाहते हैं में से कुछ विचार दे सकता है, तो हम यह कैसे पूरा करने के लिए पर कुछ विचार सुझाने के लिए सक्षम हो सकता है की तरह। –

+0

मूल रूप से, मैं यह जानना चाहता हूं कि यह हो रहा है कि हम अपने आंतरिक आधारभूत संरचना के लिए एक अग्नि-भूल अनुरोध भेजना चाहते हैं। वास्तव में और कुछ नहीं। इस घटना की आवृत्ति को जानने से हमारे उत्पाद की दिशा आगे बढ़ जाएगी। –

+1

हालांकि यह जानने के लिए कोई विशिष्ट एपीआई नहीं है कि आपका ऐप सिस्टम या उपयोगकर्ता द्वारा मारा गया था, वहां कई एपिस हैं जो आपको आंशिक रूप से बता सकते हैं कि कभी-कभी आपके ऐप के साथ क्या होता है: यदि आप जांच करते हैं तो ऑनस्टरी विधि के भीतर फिनिशिंग() आप देख सकते हैं कि गतिविधि है या नहीं खत्म होने के कारण बंद() या कुछ अन्य कारण (उदाहरण के लिए ओएस क्लीनअप)। इसके अलावा आप यह ट्रैक करने के लिए सेवा का उपयोग कर सकते हैं कि उपयोगकर्ता द्वारा आपके ऐप का एक कार्य हटाया गया है (उदाहरण के लिए रिकेंट्स से गतिविधि को हटाया जा रहा है) इसे चालू करें TaskRemoved() विधि को सुनकर। – MikeL

उत्तर

5

सुनिश्चित नहीं हैं कि यह मेरा ऐप्लिकेशन में आप मदद करने के लिए ...

जा रहा है या नहीं, मैं Activity.onDestroy() उपयोग कर रहा हूँ कि मैं सफाई की जरूरत है क्या करना है। मेरे पास कुछ गतिविधियां हैं - और उनमें से प्रत्येक में onDestroy() है।

यह मुझे सबसे करीब है जो मुझे चाहिए - और यह वास्तव में काफी अच्छी तरह से काम करता है।

+3

प्रतिक्रिया की सराहना करते हैं, यह दृष्टिकोण ऐसा लगता है जैसे यह अवांछित अनुरोधों को पकड़ लेगा। उदाहरण के लिए, जब ऐप को पृष्ठभूमि में रखा गया है और ओएस अंतरिक्ष की तलाश में है। यह संभावित रूप से इतिहास के ढेर में गतिविधि के उदाहरणों से छुटकारा पाता है जो उनके ऑनस्ट्रोयर्स को आमंत्रित करेगा। जब तक कि वे अन्य स्थितियां नहीं हैं, आप इस उदाहरण में जांच कर रहे हैं? –

+0

मैं कोई विशेष जांच नहीं करता हूं। OnDestroy() में मैं गतिविधि की स्थिति को बचाता हूं और फिर उस स्थिति को पुनर्स्थापित करता हूं() उस स्थिति को पुनर्स्थापित करता है। हालांकि यह मेरे ऐप के लिए ठीक काम करता है, मैं सराहना करता हूं कि आपकी ज़रूरतें अलग-अलग हो सकती हैं। –

+0

ऑन डेस्ट्रॉय निश्चित रूप से काम करेगा। लेकिन मैं एप्लिकेशन क्लोजिंग इवेंट को ट्रैक करना चाहता हूं जैसे कि जब हम एप्लिकेशन स्टैक से डिवाइस को हटाते हैं या डिवाइस बैटरी की वजह से डिवाइस बंद हो जाता है। क्या कोई समाधान है? –

3

एंड्रॉइड प्रलेखन को देखा और ऐसा लगता है कि हमारे पास एक ऐप बंद होने पर जानने की क्षमता नहीं है। चाहे वह उपयोगकर्ता द्वारा या स्वचालित रूप से ऑपरेटिंग सिस्टम द्वारा स्पष्ट रूप से किया गया हो।

उपयोगकर्ता एंड्रॉइड पर एप्लिकेशन बंद नहीं करते हैं।

क्या उपयोगकर्ता के आवेदन को बंद करते समय वापस रिपोर्ट करने के लिए कोई अन्य दृष्टिकोण है।

उपयोगकर्ता एंड्रॉइड पर एप्लिकेशन बंद नहीं करते हैं।

एंड्रॉइड, इस संबंध में, एक वेब ब्राउज़र की तरह व्यवहार करता है। उपयोगकर्ता वेब ब्राउज़र में वेब अनुप्रयोग बंद नहीं करते हैं। वे ब्राउज़र बंद कर सकते हैं। वे एक टैब बंद कर सकते हैं। वे घर बटन दबा सकते हैं और एक अलग साइट/ऐप पर नेविगेट कर सकते हैं। वे एक बुकमार्क चुन सकते हैं और एक अलग साइट/ऐप पर नेविगेट कर सकते हैं। वे दस्तावेज़ में ब्राउज़र को खींच सकते हैं और इसे देख सकते हैं। वे डेस्कटॉप आइकन पर डबल-क्लिक कर सकते हैं और इसे देख सकते हैं। और वे वर्तमान में देखी गई वेबसाइट/ऐप में कुछ "लॉगआउट" लिंक पर क्लिक कर सकते हैं। इनमें से कोई भी उपयोगकर्ता जो भी वेबसाइट/ऐप छोड़ने का कारण बनता है, लेकिन उनमें से कोई भी वेब साइट/ऐप को "बंद" करने के समान नहीं माना जाएगा, जिस तरह से डेस्कटॉप ओएस विंडो पर बंद बटन पर क्लिक किया जा सकता है डेस्कटॉप ऐप को "बंद करना" के रूप में।

@ एलेक्स जी नोट्स के रूप में, विभिन्न जीवन चक्र विधियां हैं जिन्हें आप यह जानने के लिए ओवरराइड कर सकते हैं कि उपयोगकर्ता किसी गतिविधि के संबंध में क्या कर रहा है। onStop() इंगित करता है कि कुछ और अग्रभूमि इनपुट पर लिया गया है और आपकी वर्तमान गतिविधि अब दिखाई नहीं दे रही है। onUserLeaveHint() इंगित करता है कि उपयोगकर्ता ने HOME दबाया। और इसी तरह। लेकिन वे गतिविधि स्तर पर हैं, आवेदन स्तर नहीं।

+3

किसी कार्य प्रबंधक ऐप के माध्यम से कोई एप्लिकेशन मारना, यह एक परिदृश्य होगा जहां उपयोगकर्ता किसी एप्लिकेशन को बंद कर देता है। –

+2

@DevanDanger: जब उपयोगकर्ता किसी कार्य प्रबंधक के माध्यम से ऐप को मारता है, और न ही जब कोई उपयोगकर्ता सेटिंग्स में प्रबंधित करें सेवा स्क्रीन के माध्यम से कोई ऐप रोकता है तो आपको अधिसूचित नहीं किया जाता है। – CommonsWare

+6

सही। "एक उपयोगकर्ता एक कार्य प्रबंधक के माध्यम से एक ऐप को मारता है" बराबर "उपयोगकर्ता एप्लिकेशन को बंद करता है" मैं जो कुछ कह रहा हूं, उपयोगकर्ता एप्लिकेशन बंद करते हैं। ऐसा कहा जा रहा है, मैं सोच रहा था कि क्या वैसे भी हम उस घटना को ट्रैक कर सकते हैं। गलत दिशा के लिए खेद है। –

0

अपने आवेदन में एक बेसएक्टिविटी विस्तार गतिविधि बनाएं और गतिविधि के बजाए इस बेसएक्टिविटी को बढ़ाएं। इस बेसएक्टिविटी में onDestroy() विधि को ओवरराइड करें।

@Override 
protected void onDestroy() { 
     super.onDestroy(); 
    //Write the code that you want to do if the application terminates 
}