2015-02-17 26 views
30

मैं Vogella द्वारा शेड्यूलिंग ट्यूटोरियल देख रहा था। यह जॉब शेड्यूलर एपीआई का उल्लेख करता है जिसे एंड्रॉइड के एपीआई 21 में पेश किया गया था। मेरा सवाल यह है कि इसे 21 (लॉलीपॉप) से कम एपीआई में कार्यान्वित किया जा सकता है लेकिन एंड्रॉइड संस्करण 3 (हनीकॉम) से कम नहीं है?एंड्रॉइड एपीआई में जॉब शेड्यूलर का उपयोग <21

+1

मेरा मानना ​​है कि यह अभी भी प्रासंगिक उत्तर है; http://stackoverflow.com/a/27633880/680519। उल्लेखनीय ट्यूटोरियल में – harism

+0

, वह जॉब शेड्यूलर को अलार्म मैनेजर और सिंक एडाप्टर से तुलना करता है, दोनों समाधान जो निम्न एपिस में मौजूद हैं और समान कार्यक्षमताएं हैं। – njzk2

उत्तर

33
अब से

, आप भी कर सकते हैं नए जीसीएमनेटवर्क प्रबंधक का प्रयोग करें। इसका उपयोग कैसे करें और यह कैसे काम करता है यहां वर्णित है - https://developers.google.com/cloud-messaging/network-manager

यह बहुत अच्छी चीजें करता है जैसे यह आपके कार्यों को खराब रीबूट करता है। लॉलीपॉप पर यह प्री-लॉलीपॉप पर जॉबशेड्यूलर का उपयोग करता है, यह अपने स्वयं के कार्यान्वयन का उपयोग करता है।

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

कि यह कैसे उपयोग करने पर एक उदाहरण कोड: https://github.com/jacktech24/gcmnetworkmanager-android-example

+0

क्या यह किसी भी तरह से जीसीएम से संबंधित है? क्या कोई ऐप, यहां तक ​​कि जिनके पास जीसीएम के साथ कुछ भी नहीं है, इसका इस्तेमाल करें? क्या यह जॉबशेड्यूलर का कुल प्रतिस्थापन हो सकता है? नुकसान क्या हैं? –

+6

यह किसी भी तरह से आपको परवाह करने के लिए जीसीएम से संबंधित नहीं है। यह नौकरी शेड्यूलर का प्रतिस्थापन नहीं है, क्योंकि यह केवल इंटरनेट से संबंधित कार्यों के लिए है, लेकिन यह आपके लिए पुराने एंड्रॉइड संस्करणों पर नेटवर्क से संबंधित जॉब शेड्यूलर प्राप्त करने का एक तरीका है – filipproch

+2

क्या इसका उपयोग गैर-इंटीग्रेट से संबंधित सामानों के लिए भी किया जा सकता है? साथ ही, क्या आप इसका उपयोग करने के अच्छे नमूने के बारे में जानते हैं (आपके द्वारा प्रदान किए गए लिंक के अलावा)? –

5

आप JobSchedulerCompat library पर एक नज़र डाल सकते हैं।

हालांकि, लेखकों के मुताबिक, जॉबशेडुलर केवल लॉलीपॉप से ​​और उसके बाद उपलब्ध है, इसलिए उस पर ध्यान दें। उद्धरण:

हालांकि, इस पुस्तकालय का अच्छी तरह से परीक्षण नहीं किया गया है, इसलिए मैं इस समय उत्पादन में की सलाह नहीं दूंगा। इस बात की कोई गारंटी नहीं है कि यह आपकी बैटरी नहीं चलाएगा या आपके डिवाइस को विस्फोट नहीं करेगा।

+2

भी इस पुस्तकालय को उत्पादन के उपयोग के लिए अनुशंसित नहीं है। – njzk2

+0

हां। उस पर प्रकाश डालने के लिए उत्तर अपडेट किया गया। – Sebastiano

7

"नौकरियां" प्री-लॉलीपॉप चलाने के कुछ तरीके हैं।

जैसा कि बताया जा आप JobSchedulerCompat पुस्तकालय का उपयोग कर सकते हैं, लेकिन यह पुस्तकालय डिफ़ॉल्ट लॉलीपॉप एपीआई की तुलना में एक बहुत बड़ा अंतर है:

लॉलीपॉप नौकरियों पर एक ही बार में batched और सभी ऐप्स के लिए निर्धारित हैं। लाइब्रेरी में अन्य ऐप्स डेटा तक पहुंच नहीं है और इसलिए लाइब्रेरी का उपयोग करके दो अलग-अलग ऐप्स से नौकरियां गठबंधन नहीं कर सकती हैं।

एक और विकल्प जिसे आप आजमा सकते हैं AlarmManager API है। इस एपीआई का उपयोग नौकरियों को शेड्यूल करने के लिए किया जा सकता है, लेकिन एक अंतर यह है कि AlarmManager में नौकरी चलाने के लिए समय के अलावा बाधाएं नहीं हैं।

चूंकि किटकैट अलार्ममेनगर एपीआई भी "सटीक" विधियों के साथ निर्धारित नहीं होने पर नौकरियों को बैच करता है। किटकैट नौकरियों से पहले बैच नहीं किया जाता है।

अपने लक्ष्य डेटा सिंक करने, से सिंक-एडाप्टर एपीआई उपयोगी हो सकता है यह है: Sync-Adapter

संदर्भ: (मैं के बाद/O 2015) AlarmManager, JobSchedulerCompat

14

वहाँ एक बहुत अच्छा और शक्तिशाली job scheduler library Evernote से है। यह प्रत्येक एसडीके स्तर पर सबसे अच्छी विधि का उपयोग करता है और आपको नौकरी निर्धारित करने और चलाने के लिए एक बहुत ही साफ और सुरुचिपूर्ण इंटरफेस देता है।

1

एंड्रॉइड एन पूर्वावलोकन API अवलोकन के बारे में this लिंक देखें।

GCMNetworkManager, Google Play सेवाओं का हिस्सा, जो एंड्रॉइड के विरासत संस्करणों में संगतता के साथ समान नौकरी शेड्यूलिंग प्रदान करता है।

11

पूर्व लॉलीपॉप उपकरणों के लिए दृष्टिकोण की सिफारिश पर https://developer.android.com/topic/performance/scheduling.html#fjd

Firebase JobDispatcherhttps://github.com/firebase/firebase-jobdispatcher-android#user-content-firebase-jobdispatcher-

अधिक पढ़ें उपयोग करने के लिए है एक खुला स्रोत के समान एक API प्रदान करता है पुस्तकालय है एंड्रॉइड मंच में जॉबशेड्यूलर। फायरबेस जॉबडिस्पर 5.0 से कम एंड्रॉइड 5.0 (एपीआई लेवल 21) के संस्करणों को लक्षित करने वाले ऐप्स के लिए जॉबशेड्यूलर-संगतता परत के रूप में कार्य करता है।

Firebase JobDispatcher एक कार्यान्वयन के रूप में Google Play सेवाओं के उपयोग के भेजने (चल रहा है) नौकरियों के लिए समर्थन करता है, लेकिन पुस्तकालय भी आप को परिभाषित करने और अन्य कार्यान्वयन उपयोग करने के लिए अनुमति देता है: उदाहरण के लिए, आप JobScheduler उपयोग करने के लिए तय कर सकते हैं या अपना खुद का, कस्टम कोड लिखें। इस बहुमुखी प्रतिभा के कारण, हम अनुशंसा करते हैं कि आप इस फायरबेस जॉबडिस्पर का उपयोग करें यदि आपका ऐप 5.0 (API स्तर 21) से कम एंड्रॉइड के संस्करण को लक्षित करता है।

फायरबेस जॉबडिस्परचर के बारे में अधिक जानकारी के लिए, इसके दस्तावेज़ और स्रोत कोड देखें।

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