2012-05-10 13 views
5

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

  • मैं अपने एप्लिकेशन को अन्य एप्लिकेशन खोलने के लिए और किसी भी अन्य एप्लिकेशन
  • मैं इसे (होम बटन) को बंद की तरह उपयोग और प्रयोग
  • प्रणाली अपने आवेदन क्योंकि मार डालेगा: लेकिन यह एक समस्या की ओर जाता है जब मैं अपने अनुप्रयोग को फिर से खोलना यह स्मृति
  • बर्बाद कर रहा है, यह और पिछले गतिविधि मैं इस्तेमाल किया खोलने के लिए चाहता है मैं एक बल पास मिलता है, क्योंकि MyApplication में मानों अशक्त हैं

अजीब बात यह है कि इस प्रणाली Destr मेरा आवेदन है, लेकिन ऐसा लगता है जैसे यह गतिविधि रखता है। मैं वास्तव में समझ में नहीं आता क्यों ऐसा इसलिए है क्योंकि एप्लिकेशन में जीवन चक्र नहीं लगता है।

क्या मैं करना चाहता हूँ:
जब MyApplication (पूरे आवेदन, न केवल गतिविधि) को मार डाला जाता है, मैं चाहता हूँ पिछले गतिविधियों भी मारे जाने के लिए। तो जब मैं ऐप को दोबारा खोलता हूं, तो यह manifest.xml द्वारा प्रदान की गई मुख्य एसिविटी शुरू करता है।
या
MyAplication में मान जारी रहे हैं और यदि एप्लिकेशन नष्ट हो जाता है तो खो नहीं जाता है। (मैं कुछ वस्तुओं के बारे में बात कर रहा हूं इसलिए मुझे लगता है कि साझा प्राथमिकताएं काम नहीं करेंगे)।
मैं अपनी गतिविधियों को बाध्य करने के लिए किसी सेवा का उपयोग नहीं करना चाहता, लेकिन क्या सिस्टम को यह बताने का एक समान तरीका है कि मेरी पिछली प्रयुक्त गतिविधि एप्लिकेशन-संदर्भ पर निर्भर करती है?

मुझे उम्मीद है कि आप समझेंगे कि मेरी समस्या क्या है और कोई मेरी मदद कर सकता है।

+0

मुझे पसंद है कैसे जवाब में से कोई भी प्रतीत होता है कि आप कस्टम एप्लिकेशन के उपयोग को संदर्भित करते हैं, भले ही आप इसका उपयोग स्पष्ट रूप से नोट करते हैं: /)। क्या आपने एप्लिकेशन का उपयोग करने का प्रयास किया है।गतिविधि लाइफसाइकिल बिलकुल बिलकुल भी नहीं, यह सुनिश्चित नहीं है कि आप यही पूरा करने की कोशिश कर रहे हैं (ऐसा लगता है कि आपको रिवर्स डायरेक्टियो की आवश्यकता हो सकती है)। – MikeIsrael

+0

मुझे लगता है कि आप ** गतिविधि स्टैक इतिहास ** का जिक्र कर रहे हैं, संस्कार? – waqaslam

+0

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

उत्तर

1

चीजों को करने का सही तरीका आपके आवेदन स्थिति को सहेजना होगा। अपने राज्य को बचाने के लिए ऑनस्टवेस्टेंसस्टेट (बंडल सेव किया गया इंस्टेंसस्टेट) विधि को ओवरराइड करें और इसे पुनर्प्राप्त करने के लिएस्टोर इंस्टेंसस्टेट को सुरक्षित करें।

आप डेटा के बड़े सेट को बचाने के लिए की जरूरत है एक SQL डेटाबेस

+0

टिप के लिए धन्यवाद लेकिन जैसा कि मैंने अपनी पोस्ट में लिखा था, यह मेरे लिए काम नहीं करता है। जहां तक ​​मैं इसे समझ गया, मैं अनुप्रयोगों में अपने स्वयं के ऑब्जेक्ट्स को सहेज नहीं सकता। – joshplusa

+0

तब मेरा सबसे अच्छा अनुमान आपके ऑब्जेक्ट्स – Ika

+0

को सहेजने के लिए SQL डेटाबेस का उपयोग करना होगा। मैं एक नजदीकी नजर रखूंगा कि मेरी समस्या का समाधान करने का सबसे अच्छा तरीका क्या है। सहायता के लिए धनयवाद! – joshplusa

0

का उपयोग कर विचार तुम्हें यकीन एप्लिकेशन बंद कर देता है और जिस तरह से आप onPause(), onResume() और onStop() तरीकों में करने के लिए यह चाहते पुन: प्रारंभ होता बनाना चाहिए। , savedInstanceState जो एप्लिकेशन के राज्य को बचा सकता है की जाँच करें (और, यह बहाल जब यह onCreate के लिए एक पैरामीटर के रूप में भेजा है)

+0

धन्यवाद लेकिन मैं आवेदन गतिविधि के बारे में बात नहीं कर रहा हूं। – joshplusa

+0

@joshplusa आप दोनों के बारे में बात कर रहे थे, और आप चाहते थे कि मुख्य गतिविधियां ऑनस्टॉप() के बाद फिर से शुरू हो जाएं, है ना? – keyser

+0

हां। फिलहाल मैं अपने मूल्यों को रेज़्यूम() में देख रहा हूं। अगर वे शून्य हैं तो मैं ऐप खत्म करता हूं। ऐसा करने से मैं किसी भी समय मुख्य गतिविधि में जाऊंगा। लेकिन यह गंदा है। हो सकता है कि मुझे एक्टिविटी स्टैक हिस्ट्री को नज़र डालें। आपके उत्तर के लिए धन्यवाद! – joshplusa

0

ऐप्लिकेशन का आपका कस्टम कार्यान्वयन में एक ध्वज जोड़ने कहते हैं:

public boolean appContextExist = false; 

पर अपने पहली गतिविधि को सही पर झंडा, सेट

अवहेलना onCreate और onResume अपनी गतिविधि जो संदर्भों की जरूरत पर विधि, निम्नलिखित जोड़ें:

MyApplication myApp = ((MyApplication) getApplicationContext()); 
if (!myApp.appContextExist) { 
    // Code to return to start activity here 
} 
संबंधित मुद्दे