2011-01-26 13 views
7

हम कुछ समय के लिए वेबपैप पर काम कर रहे हैं जिसे पूरी तरह से हमारे एंड्रॉइड ऐप के माध्यम से एक्सेस करने के लिए डिज़ाइन किया गया है। जाहिर है, ऐप स्वयं बहुत हल्का है - ज्यादातर खाते बनाने और लॉग इन करने के लिए कार्यक्षमता प्रदान करता है, साथ ही यह सुनिश्चित करता है कि वेबपैप ही हमारे एंड्रॉइड ऐप के माध्यम से ही पहुंच योग्य है - लेकिन मैं digress ...एंड्रॉइड ऐप ऑटो-एक्जिट/टाइमआउट कार्यक्षमता

ऐप सुंदर है PHP सत्र चर पर निर्भर, जो समाप्त हो जाता है, और वर्तमान परीक्षण वातावरण में, यदि आपका सत्र समाप्त हो जाता है तो भी आपको लॉगिन स्क्रीन पर लात मार दिया जाता है। लेकिन उत्पादन में, लॉगिन स्क्रीन एंड्रॉइड ऐप पर होगी, जो पूरी तरह से वेबव्यू से स्वतंत्र है।

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

क्या ऐसा करने का कोई तरीका है यह - एक ऑटो टाइमआउट निकास समारोह स्थापित करें? या शायद ऐप से ऑन फ़ॉज़ फ़ंक्शन के साथ बाहर निकलें?

उत्तर

7

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

क्यों Service?

लेकिन अगर किसी न किसी प्रकार था हम सिर्फ निष्क्रियता के 15 मिनट (या जो भी) के बाद ऐप से बाहर निकलते सकता है - कि बेहतर होगा - या कम से कम आसान ... मुझे लगता है कि ...

आप ऐप से बाहर निकलना नहीं चाहते हैं। आप लॉगिन स्क्रीन पर वापस जाना चाहते हैं।

WebView -hosting गतिविधि के onResume() में टाइमआउट स्थिति की जांच करें। यदि गतिविधि बहुत पुरानी है, तो अपनी लॉगिन स्क्रीन के लिए startActivity() पर कॉल करें, फिर पर कॉल करें WebView -होस्टिंग गतिविधि को बंद करने के लिए।

+0

आप देखते हैं, यही कारण है कि स्टैक ओवरफ्लो मेरी पसंदीदा साइट है। जब मैं सिर्फ लॉगिन स्क्रीन पर जा सकता हूं तो दुनिया में क्यों मैं एप्लिकेशन से बाहर निकलना चाहता हूं ... बस एक नया परिप्रेक्ष्य की आवश्यकता है और यह सब सही समझ में आता है! अब, मुझे लगता है कि वास्तव में इस में वास्तव में कबूतर नहीं है, क्या टाइमआउट कुछ है जिसे मैं स्वयं वेबव्यू होस्टिंग गतिविधि में सेट कर सकता हूं - यानी केवल एक टाइमर जो गतिविधि शुरू होने पर चलता है? या यह उससे अधिक जटिल है? – user446882

+0

और मुझे लगता है कि ऐप पृष्ठभूमि में होने पर भी टाइमर चलना जारी रहेगा? – user446882

+1

@ user446882: टाइमर का उपयोग क्यों करें? बस वर्तमान टाइमस्टैम्प की तुलना करें जो भी मूल्य "egad! हम समाप्त हो गए हैं!" मूल्य।यदि यह पूरी तरह से "निष्क्रियता" है, तो वर्तमान टाइमस्टैम्प को 'ऑनपोज़()' में सहेजें और इसे 'onResume()' में वर्तमान टाइमस्टैंप से तुलना करें। – CommonsWare

0

मैं इस विधर्म एंड्रॉयड डेवलपर्स द्वारा विचार किया जाएगा पता है, लेकिन यह काम करना चाहिए:

Activity.moveTaskToBack(true); 
Process.killProcess(Process.myPid()); 

फिर भी, इस एक निरपेक्ष अंतिम उपाय होगा।

+5

Google ने बार-बार कहा है कि डेवलपर्स को ऐसा नहीं करना चाहिए। – CommonsWare

+1

यह डेवलपर्स नहीं है जिन्हें इसे एंड्रॉइड उपयोगकर्ताओं के रूप में सीखने की आवश्यकता है, इसलिए Google को उपयोगकर्ताओं को बेहतर तरीके से शिक्षित करने की आवश्यकता है। यह आश्चर्यजनक है कि टास्क किलर कितने लोकप्रिय हैं और कैसे लोग आश्वस्त हैं कि वे बैटरी बचाते हैं। अगर लोग मेरे ऐप को "चल रहे" देखते हैं तो वे मानते हैं कि यह बैटरी का उपयोग कर रहा है और मेरे ऐप को दोषी ठहराता है, न कि Google। यही कारण है कि हमें प्रक्रिया को मारने की जरूरत है। – dhaag23

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