2017-04-18 24 views
6

मुझे थोड़ा अनिश्चितता है कि FirebaseJobDispatcher (जॉबशेड्यूलर) काम करने का अनुमान है। जब मैं उपयोगकर्ता को इंटरनेट कनेक्शन खो देता हूं, तो मैं इसे अपने ऐप चलाने के लिए कनेक्टिविटी प्राप्त करता हूं और कनेक्शन प्राप्त करने पर सामग्री अपडेट की जांच करने के लिए सिंक करता हूं।फ़ायरबेस जेबडिस्पाटर नेटवर्क परिवर्तन पर चला

मुझे पता है कि हमें कनेक्टिविटी चेंज ब्रॉडकास्ट श्रोता का उपयोग नहीं करना चाहिए और जॉबशेड्यूलर का उपयोग नहीं करना चाहिए, लेकिन ऐसा लगता है कि जॉबशेडुलर एक बेहतर अलार्ममेनगर है जहां यह कनेक्टिविटी चेंज (जिसकी मुझे आवश्यकता नहीं है) भी चलाया जाएगा।

क्या यह मामला है या क्या मैं गलतफहमी करता हूं कि यह कैसे काम करता है? यदि ऐसा नहीं है तो उपयोगकर्ता केवल इंटरनेट कनेक्शन प्राप्त करते समय आग लग जाएगा?

+0

हाय @tyczj, हमारे पास आपके जैसी ही आवश्यकता है। हम अलार्म प्रसारण रिसीवर शुरू करना चाहते हैं, जब इंटरनेट उपलब्ध होने के लिए अनुपलब्ध हो। हम 'CONNECTIVITY_CHANGE' के माध्यम से इस निर्बाध को प्राप्त करने के लिए उपयोग करते हैं। लेकिन, जब से आप ऐप को मारते हैं, तो 'CONNECTIVITY_CHANGE' को सुनकर, अब आप' FirebaseJobDispatcher 'का उपयोग कैसे करें? –

+0

@ चेकोयानकेंग जॉब प्रेषक इस तरह से काम नहीं करता है, यह एक स्मार्ट अलार्म प्रबंधक है। मैं अब पुश अधिसूचनाओं का उपयोग करता हूं और जब उपयोगकर्ता इंटरनेट वापस चला जाता है तो पुश नोटिफिकेशन आते हैं और सामग्री अपडेट होते हैं – tyczj

उत्तर

0

जॉबडिस्पर के लिए TestApp बहुत अच्छे उदाहरण प्रदान करता है; सामान्य होने पर, कोई डिस्पैचर के लिए नौकरी बनाने के लिए बिल्डर का उपयोग कर सकता है। अभी यह answer मिला है, जो इसे और अधिक जानकारी में बताता है।

/* a recurring job, being triggered in the time-frame in between 59-61 seconds */ 
Job.Builder builder = dispatcher 
    .newJobBuilder() 
    .setTag("SomeJob") 
    .setService(SomeJobService.class) 
    .setRecurring(true) 
    .setTrigger(Trigger.executionWindow(59, 61)); 
3

JobScheduler जब आप कुछ कार्यों कि बस जब कुछ पूर्व शर्त बना रहे हैं (कनेक्टिविटी, बैटरी और सिस्टम के प्रसारण) होता है ट्रिगर करना चाहते हैं एक बढ़िया विकल्प है। आपके मामले में कुछ कार्य निर्धारित करते हैं जो केवल तब होता है जब उपयोगकर्ता के पास इंटरनेट कनेक्शन होता है।

आप JobSchedulerन्यूनतम API 21 और Google Play सेवा का उपयोग की आवश्यकता नहीं है। FirebaseJobDispatcherन्यूनतम API 9 और Play सेवा आवश्यक है
अतिरिक्त AndroidJob एक लाइब्रेरी है जिसमें न्यूनतम API 14 है और उसे Play सेवा की आवश्यकता नहीं है।

यह वीडियो FirebaseJobDispatcher के साथ कुछ संदेहों को स्पष्ट करने में मदद कर सकता है और इसके अतिरिक्त Evernote द्वारा यह पोस्ट अच्छा संसाधन है।

1

कोड नीचे किसी भी नेटवर्क पर सरल शब्दों में .setConstraints (Constraint.ON_UNMETERED_NETWORK) के लिए वाईफ़ाई या डाटा नेटवर्क

Job myJob = mDispatcher.newJobBuilder() 
       .setService(MyJobService.class) 
       .setTag(JOB_TAG) 
       .setRecurring(true) 
       .setTrigger(Trigger.executionWindow(5, 5)) 
       .setLifetime(Lifetime.FOREVER) 
       .setConstraints(Constraint.ON_ANY_NETWORK) 
       .setReplaceCurrent(false) 
       .setRetryStrategy(RetryStrategy.DEFAULT_EXPONENTIAL) 
       .build(); 

     mDispatcher.schedule(myJob); 

बदलें ट्रिगर किया जाएगा यह केवल वाईफाई नेटवर्क में काम करेंगे।

कॉन्स्टर्नेट निकालें यह नेटवर्क के बिना भी काम करेगा

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