2010-07-20 3 views
10

मैं Android के साथ निम्नलिखित हासिल करने की कोशिश कर रहा हूँ:एंड्रॉइड: कैसे पता चलेगा कि कोई ऐप कब प्रवेश करता है या "पृष्ठभूमि" मोड?

  • जब एप्लिकेशन को पृष्ठभूमि में है, एक धागा चुनाव एक सर्वर हर अब और फिर डेटा पुनः प्राप्त करने और उपयोगकर्ता को सूचित करता है, तो नए डेटा उपलब्ध है। मैं इसके लिए एक सेवा का उपयोग कर रहा हूँ, ठीक है।

  • जब एप्लिकेशन "सक्रिय" उपयोग में है, अपनी गतिविधियों के अर्थात दिखाई दे रहा है, के रूप में यह अन्य उपयोगकर्ता क्रियाओं के साथ हस्तक्षेप कर सकते हैं मतदान बंद कर देना चाहिए।

मुझे समझ में नहीं आता कि ऐप के "सक्रिय" या "पृष्ठभूमि" उपयोग के बीच संक्रमण का पता कैसे लगाया जाए। ऑनर्यूम() गतिविधि विधियों में मदद नहीं मिलती है, क्योंकि एक गतिविधि को "सक्रिय" उपयोग के दौरान छुपा या दृश्यमान किया जा सकता है। मेरी समझ यह है कि ऐप स्वयं 2 राज्यों के बीच अंतर नहीं बनाता है।
होम बटन दबाए जाने पर यह संबंधित हो सकता है? भेद करने का कोई और तरीका है?
मैं आईफोन के ऐप प्रतिनिधि विधि applicationDidEnterBackground के बराबर सोच रहा हूं। क्या एंड्रॉइड के साथ सोचने का यह सही तरीका है? या मैं एक और दृष्टिकोण का उपयोग करूँगा?

धन्यवाद।

+0

इसी तरह: http://stackoverflow.com/questions/3136187 – yanchenko

उत्तर

3

मैं संदर्भ के लिए Activity Lifecycle जा रहा हूँ। अपने ActivityonResume और के बीच 'सक्रिय' है, यानी है, यह स्क्रीन पर और उपयोगकर्ता इसे के साथ बातचीत कर सकते हैं। यदि आपकी गतिविधि की विधि कहा जाता है तो आपको यह मानना ​​चाहिए कि यह अब 'सक्रिय' नहीं है और उपयोगकर्ता अब तकको फिर से कॉल नहीं कर सकता है। अगर आप इसे अपनी सेवा में ट्रैक करना चाहते हैं तो आपको इसे मैन्युअल रूप से करना होगा।

यह संभवतः Activity#onResume में आपकी सेवा में एक विधि को कॉल करके सबसे आसानी से हासिल किया जाता है जो काउंटर को बढ़ाता है या ध्वज सेट करता है और उस परिवर्तन को वापस कर देता है। यदि आपके पास कई गतिविधियां हैं तो संभवतः आपको एक काउंटर की आवश्यकता होगी, शायद AtomicInteger, और यह निर्धारित करने के लिए इसका उपयोग करें कि आपको अपने मतदान को फिर से शुरू करना चाहिए।

मैं शायद, जब काउंटर 0 तक पहुँच जाता है समय की एक छोटी सी बिट के लिए इंतजार करेंगे यह पुनः जाँच, और अगर यह अभी भी 0 फिर से शुरू मतदान है। यह एक गतिविधि के और दूसरे के onResume के बीच के अंतर के लिए जिम्मेदार होगा।

+0

मैंने अंततः इसे रूट गतिविधि पर किया: जैसे ही रूट गतिविधि गायब हो जाती है (या तो क्योंकि ऐप छोड़ा गया है या क्योंकि बाद की गतिविधि इसे कवर करती है), मैं सेवा ट्रिगर करें। जैसा कि आपने सलाह दी थी, फिर मैं टाइमर ट्रिगर करता हूं, और फिर मतदान शुरू करता हूं। यदि टाइमर की अवधि समाप्त होने से पहले रूट गतिविधि फिर से प्रकट होती है, तो सेवा बंद हो जाती है। मैं आपका जवाब टिकता हूं क्योंकि यह वैसे भी मेरी मदद करता है, धन्यवाद। – user244129

+4

प्रश्न का उत्तर नहीं दिया गया है ... सवाल यह था कि आप कैसे पहचानते हैं कि संपूर्ण एपीपी पृष्ठभूमि में जाती है और न केवल एक गतिविधि –