2011-01-08 11 views
5

मेरे पास एक ऐसा एप्लिकेशन है जो ठीक काम करता है, सिवाय इसके कि जब यह लंबे समय तक पृष्ठभूमि में होता है और उसे अग्रभूमि में वापस लाया जाता है। मैं सोच रहा हूं कि अगर फ्लैग टास्कस्टेट हमेशा झंडा के साथ कुछ करने के लिए है, तो सिस्टम ने मेरी गतिविधि ढेर को मंजूरी दे दी है। मैं इसका परीक्षण करना चाहता हूं, लेकिन मैं हर बार 30 मिनट के लिए बैठना नहीं चाहता। क्या सामान्य सिस्टम व्यवहार को किसी अन्य तरीके से ट्रिगर करने का कोई तरीका है?एंड्रॉइड का परीक्षण कैसे करें: हमेशाRetainTaskState

अद्यतन: यदि मैं ध्वज एंड्रॉइड सेट करता हूं: clearTaskOnLaunch, क्या यह हमेशा के रूप में एक ही काम करने जा रहा है जब मैं ऐप को फिर से लॉन्च करता हूं?

उत्तर

-1

शायद इसलिए कि आप एप्लिकेशन पर डेटा स्टोर करते हैं। जब बहुत समय बीत चुका है तो आवेदन मारे गए (स्मृति के कारण, आदि)।

लौटने पर यह सबकुछ बहाल करता है लेकिन एप्लिकेशन ऑब्जेक्ट्स ... जो शून्य है कि यह क्रैश हो जाता है।

+0

आवेदन निश्चित रूप से सही शब्द नहीं है। स्मृति के कारण गतिविधि मारे गए। आवेदन तब तक जीवित रहता है जब तक कोई भी घटक जीवित न हो। इसके अतिरिक्त, आपने उपयोगकर्ता का कोड नहीं देखा है और उन धारणाएं बना रहे हैं जो आवश्यक रूप से मान्य नहीं हैं। यह व्यवहार निश्चित रूप से तब हो सकता है जब आवेदन जानकारी ऑब्जेक्टियो में कोई जानकारी न हो। अंत में, यह ओपीएस प्रश्न को किसी भी तरह से संबोधित नहीं करता है। ओपी एक झंडा का परीक्षण करना चाहता है। –

3

क्या सामान्य सिस्टम व्यवहार को किसी अन्य तरीके से ट्रिगर करने का कोई तरीका है?

हमेशा परीक्षण करने का सबसे आसान तरीकाRetainTaskState गतिविधि छोड़ना और कई अनुप्रयोगों (एक के बाद एक) शुरू करना है जो स्मृति का एक टन उपयोग करते हैं। इसकी दोहराव लेकिन काफी भरोसेमंद। यदि मैं सही एप्लिकेशन चुनता हूं तो मैं लगभग 40 सेकंड के बाद अपने गैलेक्सी एस -2 पर ट्रिगर कर सकता हूं।

उस से कम, मुझे इस ध्वज का परीक्षण करने के लिए कोई अन्य प्रत्यक्ष तरीका नहीं है।

अगर मैं ध्वज एंड्रॉइड सेट करता हूं: clearTaskOnLaunch, क्या यह ऐप को फिर से लॉन्च करने पर हमेशा के रूप में एक ही चीज़ करने जा रहा है?

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

अतिरिक्त सूचना

alwaysRetainTaskState अपने जड़ गतिविधि पर ही उपयोगी है। इसका मूल उद्देश्य इसे और अन्य सभी गतिविधियों को लंबे समय तक जीवित रखना है। कोई भी वस्तुएं उन गतिविधियों से सीधे बंधी नहीं हैं, जो प्रवाह में हैं और उन्हें त्यागने में सक्षम हैं। अक्सर, यदि alwaysRetainTaskState काम नहीं कर रहा है, तो ऐसा इसलिए है क्योंकि आपका कोड मैन्युअल रूप से संदर्भों से छुटकारा पा रहा है (आमतौर पर onPause() या इसी तरह की घटना के जवाब में)।

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