मैं android
में नया हूं। मैं अपने आवेदन के साथ लगभग 3 सप्ताह संघर्ष करता हूं। मुझे सामान्य मोड और sleep mode
में पैकेट भेजना और प्राप्त करना होगा। My app
डेटा का 5 सेकंड का आदान-प्रदान करना चाहिए। मैंने alarmmanager
का उपयोग करने की कोशिश की, लेकिन एंड्रॉइड 5 पर यह काम नहीं कर रहा है। android
5 पर एक अंतराल इसे 60 सेकंड में बदल देता है। इस तरह के समाधान से बैटरी जल्दी खराब हो जाती है। जब मैं सामान्य asynctask का उपयोग करता हूं, न कि IntentService
, तो यह तभी काम करता है जब स्क्रीन ON
और app
दिखाई दे। जब ऐप छिपा होता है या मैं पावर OFF
क्लिक करता हूं, तब डेटा का आदान-प्रदान काम करना बंद कर देता है। सबसे अच्छा उपाय क्या है?
2 जवाब
यहां तक कि RTC_WAKEUP कई बार मदद नहीं करता है।
समाधान जो मेरे ऐप के लिए काम करता है जब डिवाइस गहरी नींद मोड में होता है:
अलार्म मैनजर के साथ संयुक्त WakefulBroadcastReceiver का उपयोग करें।
सेवा startWakefulService () द्वारा शुरू की गई है और जब यह समाप्त हो जाती है, तो यह पूरा लॉक को कॉल करता है जो कि FullWakefulIntent (आशय) कहकर जारी करता है। इसलिए डिवाइस को वापस सोने की अनुमति दी जाएगी।
मैं कोई कोड नहीं जोड़ रहा हूं। अलार्म मैनजर के साथ वेकफुलब्रोडकास्टसीवर का उपयोग करने के तरीके के उदाहरणों के लिए खोजें। यहां तक कि WakefulBroadcastReceiver डॉक्टर के पास कुछ टेम्पलेट कोड हैं।
इसके अलावा अलार्म की फ्रीक्वेंसी को कम करें ताकि आप इतनी बैटरी निकलने से बच सकें।
आप किसी विशेष समय पर डिवाइस को जगाने के लिए AlarmManager
वर्ग का उपयोग कर सकते हैं, फिर आप जो चाहें उस अंतराल पर एक ऑपरेशन को आग लगा सकते हैं। कोड यहां पाए गए डॉक्स से:
private AlarmManager alarmMgr;
private PendingIntent alarmIntent;
...
alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, AlarmReceiver.class);
alarmIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
// Set the alarm to start at 8:30 a.m.
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 8);
calendar.set(Calendar.MINUTE, 30);
// setRepeating() lets you specify a precise custom interval--in this case,
// 20 minutes.
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
1000 * 60 * 20, alarmIntent);
इस ब्लॉक की अंतिम पंक्ति पर ध्यान दें। आप जो भी अंतराल चाहते हैं, उसे सेट करने के लिए आप setRepeating()
विधि का उपयोग कर सकते हैं।
संबंधित सवाल
जुड़े हुए प्रश्न
नए सवाल
android
एंड्रॉइड Google का मोबाइल ऑपरेटिंग सिस्टम है, जिसका उपयोग प्रोग्रामिंग या डिजिटल डिवाइस (स्मार्टफोन, टैबलेट, ऑटोमोबाइल्स, टीवी, वियर, ग्लास, IoT) को विकसित करने के लिए किया जाता है। एंड्रॉइड से संबंधित विषयों के लिए, एंड्रॉइड-विशिष्ट टैग जैसे कि एंड्रॉइड-इरादे, एंड्रॉइड-गतिविधि, एंड्रॉइड-एडॉप्टर आदि का उपयोग करें। विकास या प्रोग्रामिंग के अलावा अन्य प्रश्नों के लिए, लेकिन एंड्रॉइड फ्रेमवर्क से संबंधित हैं, इस लिंक का उपयोग करें: https: // android.stackexchange.com।