2015-08-28 7 views
7

मैं हर दिन कुछ कोड (हर 24 घंटे) चलाने के लिए चाहता हूं। समस्या यह है कि यदि उपयोगकर्ता ऐप नहीं खोलता है। जब एप्लिकेशन खुला नहीं होता है तो कोड कैसे चलाएं?ऐप खुला नहीं होने पर हर दिन कोड चलाएं

+3

http://stackoverflow.com/questions/2333680/android-schedule-action [एंड्रॉयड अलार्म सेट की – nKn

+0

संभव डुप्लिकेट कुछ दिनों में प्रबंधक] (http://stackoverflow.com/questions/5715940/setting-android-alarm-manager-on-certain-days) – Ankit

उत्तर

10

आप विभिन्न तरीकों से और उनमें से कुछ का उपयोग कर सकते पृष्ठभूमि आवधिक कार्य चलाने के लिए एंड्रॉयड में कर रहे हैं:

  1. JobScheduler

(केवल एपीआई 21 या इसके बाद के संस्करण के लिए) एंड्रॉयड इस वर्ग जोड़ा गया है प्रलेखन के लिए एपीआई 21 पर link है।

  1. JobSchedulerCompat - 11 एपीआई के लिए या इसके बाद के

आप पुस्तकालय here बारे में सब कुछ पा सकते हैं JobScheduler पुस्तकालय की backport।

  1. उपयोग अलार्म प्रबंधक को संभालने के लिए समय-समय पर कार्य

तुम भी AlarmManager उपयोग कर सकते हैं समय-समय पर कार्य शेड्यूल करने के लिए। इसे लागू करने के लिए एक पूर्ण लेख here पोस्ट किया गया है।

  1. आवधिक कार्य निर्धारित करने के लिए जीसीएम (Google क्लाउड मैसेजिंग) नेटवर्क प्रबंधक का उपयोग करें।

आप इसे लागू करने के लिए link पर इस दस्तावेज़ को देख सकते हैं।

GCM नेटवर्क प्रबंधक

का उपयोग कर समय-समय पर कार्य के लिए उदाहरण अपनी परियोजना स्तर build.gradle में निर्भरता जोड़ें।

compile 'com.google.android.gms:play-services-gcm:7.5.0' 

एक जावा वर्ग कि GcmTaskService

public class BackgroundTaskHandler extends GcmTaskService { 

    public BackgroundTaskHandler() { 
    } 

    @Override 
    public int onRunTask(TaskParams taskParams) { 
     //Your periodic code here 
    } 
} 

तक फैली हुई प्रकट में सेवा घोषित बनाएँ।एक्सएमएल

<service 
     android:name=".BackgroundTaskHandler" 
     android:exported="true" 
     android:permission="com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE"> 
     <intent-filter> 
      <action android:name="com.google.android.gms.gcm.ACTION_TASK_READY" /> 
     </intent-filter> 
    </service> 

अब किसी भी वर्ग से समय-समय पर काम अनुसूची के रूप में: -

String tag = "periodic"; 

    GcmNetworkManager mScheduler = GcmNetworkManager.getInstance(getApplicationContext()); 

    long periodSecs = 60L;// 1 minute 

    PeriodicTask periodic = new PeriodicTask.Builder() 
      .setService(BackgroundTaskHandler.class) 
      .setPeriod(periodSecs) 
      .setTag(tag) 
      .setPersisted(true) 
      .setUpdateCurrent(true).setRequiredNetwork(com.google.android.gms.gcm.Task.NETWORK_STATE_CONNECTED) 
      .build(); 
    mScheduler.schedule(periodic); 
1

अनुसूचित आपरेशन लागू करने के लिए ब्रांड के नए रास्ते job scheduler, जो हाल ही जोड़ दिया गया (नहीं तो) है एसडीके स्तर 21.

समय-समय पर कार्य करने के लिए एक सरल (और बैकपोर्टेड) ​​जिस तरह से उपलब्ध है उपयोग करने के लिए गूगल के लिए है खेल सेवाएं: network manager। इसके नाम के बावजूद, यह गैर नेटवर्क से संबंधित कार्यों को निर्धारित करने के लिए उपयोगी है।

चेक

अनुसूची एक आवधिक कार्य नेटवर्क और डिवाइस को चार्ज करने राज्यों की परवाह किए बिना

अनुभाग।

+0

मुझे नहीं लगता कि जॉबशेड्यूलर एपीआई 11 या उससे ऊपर पर काम करता है। दस्तावेज़ीकरण के अनुसार इसे एपीआई 21 पर जोड़ा गया था। –

+0

हां यह एक टाइपो था। धन्यवाद, धन्यवाद। – fedepaol

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