2012-07-02 24 views
8

एंड्रॉइड पर विकास करते समय मुझे कुछ अजीब व्यवहार का सामना करना पड़ा और मेरे गुगलिंग के दौरान एकमात्र जवाब मुझे मिल सकता था कि यह डिज़ाइन द्वारा है और मुझे इसकी परवाह नहीं करनी चाहिए ।एंड्रॉइड फोन परिणामों की लॉकिंग स्क्रीन कई बाद में पॉज़/ऑन रीज़्यूम इवेंट्स

मेरा एप्लिकेशन सक्रिय होने पर स्थान डेटा प्राप्त करता है, और जब ऑनऑज़ ईवेंट कहलाता है, तो स्थान अपडेट को रोककर बैटरी को संरक्षित करने के लिए मैं एक तरीका लागू करने वाला था, और बाद में ऑनस्यूम इवेंट कहलाता है।

डीबगिंग करते समय मैंने फोन को लॉक करते समय यह अजीब व्यवहार देखा, पर रोकें-> ऑनस्यूम को तीन या अधिक बार एक के बाद बुलाया जाता है और फिर ऑनस्टॉप ईवेंट के साथ समाप्त होता है। एकमात्र उत्तर जहां मैं खोजने में सक्षम था जैसे: एंड्रॉइड काम करता है, कभी नहीं।

मुझे लगता है कि मैं उत्सुक हूं, क्या कोई मुझे कई सरल उप-गतिविधि को रोकने और फिर से शुरू करने की आवश्यकता बता सकता है? क्या यह अधिक बैटरी का उपभोग नहीं करता है, खासतौर पर बड़ी गतिविधियों के लिए जिन पर गंभीर कोड है? क्या ऐसा होने से रोकने के लिए कोई तरीका है? मुझे यह जानकर खुशी होगी कि कम से कम उन घटनाओं में मेरा कोड नहीं कहा जाता है, शायद एक {} ब्लॉक अनावश्यक CPU चक्रों को रोकने से रोकता है।

किसी भी अंतर्दृष्टि की सराहना की जाती है!

उत्तर

1

आपको "स्क्रीन टाइम आउट" और "स्क्रीन लॉक" ईवेंट को संभालने के लिए प्रसारण रिसीवर पंजीकृत करना होगा।

आप बस अपना डेटा पुनर्प्राप्त करना बंद कर दें। नमूना कोड:

public class ScreenReceiver extends BroadcastReceiver {  

     @Override 
     public void onReceive(Context context, Intent intent) { 
      if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { 
       //screen locked, do here 
      } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) { 
       //screen unlocked, do something here 
      } 
     } 

} 

आप androidMenifest.xml

+0

धन्यवाद, शायद यह होगा। असल में मैं इस बारे में अधिक जानकारी की तलाश कर रहा था कि यह क्यों हो रहा है, लेकिन शायद मैं बहुत ज्यादा पूछ रहा हूं। – r41n

0

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