2011-03-03 18 views
7

मेरे पास एक ऐसी सेवा है जो डाउनलोड थ्रेड को जन्म देती है जो कभी-कभी बड़ी फ़ाइलों को डाउनलोड करती है। मुझे एहसास हुआ कि जैसे ही फोन सो गया, डाउनलोड थ्रेड काफी धीमा हो जाएगा, फिर रुकें।PARTIAL_WAKE_LOCK बनाम SCREEN_DIM_WAKE_LOCK डाउनलोड थ्रेड

स्पष्ट उपाय, एक wakelock। तो मुझे लगता है कि सीपीयू डाउनलोड को प्रोसेस करने के लिए, केवल partial_wake_lock प्राप्त करना ठीक होगा। यह काम नहीं करता है, वही व्यवहार, डाउनलोड धीमा हो जाता है और फिर स्क्रीन बंद होने पर बंद हो जाता है।

फिर मैंने screen_dim_wake_lock की कोशिश की। इस बार, स्क्रीन (मंद) पर रुक गई, और जब तक यह पूरा नहीं हुआ तब तक डाउनलोड पूर्ण हो गया, वाकेलॉक जारी किया गया, और फिर फोन सो गया।

मेरा सवाल यह है कि, मैं part_dim_wake_lock के दौरान एक partial_wake_lock को पकड़ते समय अपना धागा क्यों नहीं चला सकता? क्या इन 2 के बीच अंतर के बारे में कुछ अनियंत्रित व्यवहार है? ऐसा इसलिए है क्योंकि मैं शायद यूआई थ्रेड पर नहीं चल रहा हूं?

संपादित करें:

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

+0

इस के साथ कहीं भी जाओ? जब तक मैं SCREEN_DIM_WAKE_LOCK का उपयोग नहीं करता तब तक मुझे नेटवर्क को स्वभावपूर्ण होने के साथ समान समस्याएं आ रही हैं। आंशिक वेक-लॉक बस पर्याप्त नहीं है - न ही जब वाईफ़ाई लॉक के साथ मिलकर ... – barkside

उत्तर

1

मुझे आपके साथ एक ही समस्या थी जो लगातार एक बड़ी सेट यूआरएल डाउनलोड करती है। here वर्णित अनुसार, जैसा कि आपने किया था, स्क्रीन_डिम_वेक_लॉक का उपयोग करने का सबसे अच्छा तरीका था और पर अपनी सेवा लाएं।

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

तो, एक और तरीका एक partial_wake_lock (केवल सीपीयू पर है) का उपयोग करें और अपने फोन की सेटिंग बदलें ताकि वाईफ़ाई के रूप में हमेशा पर होना करने के लिए है (शायद इस WIFI_LOCK आप प्राप्त कर लेता है की तरह लगता है ..):

  • होम स्क्रीन से सिस्टम या सेटिंग पर जाएं और उसके बाद
  • वायरलेस & नेटवर्क
  • चयन Wi-Fi सेटिंग
  • मेनू दबाएं चुनते हैं और उन्नत
  • डब्ल्यू प्रेस मैं-Fi निष्क्रियता नीति और के लिए इसे बदल कभी

फिर अपने सेवा भी स्लीप मोड में काम करेंगे स्क्रीन के साथ बंद कर दिया। यहां एकमात्र समस्या यह है:

यदि आप थोड़ी देर के लिए वाईफ़ाई कनेक्टिविटी खो देते हैं तो एंड्रॉइड आपकी सेवा को मार सकता है क्योंकि यह निष्क्रिय होगा .. लेकिन यदि आपका फोन हमेशा अच्छी स्थिरता वाले वाईफ़ाई नेटवर्क से जुड़ा हुआ है तो सभी काम करेंगे ठीक!

+0

+1 आपके उत्तर ने मेरी मदद की, धन्यवाद – Ahmed

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