6

में मैं अलार्म मैनेजर के setExactAndAllowWhileIdle का उपयोग करके हर 30 मिनट में अपने ऐप में अलार्म आग लगाने की कोशिश कर रहा हूं लेकिन यह काम नहीं कर रहा है!एंड्रॉइड अलार्म मैनेजर setExactAndAllowWhileIdle() एंड्रॉइड 7.0 में काम नहीं कर रहा है डोज़ मोड

जब भी मुझे अलार्म सिग्नल प्राप्त होता है तो पुश अधिसूचना जारी करके कार्यक्षमता का परीक्षण करता हूं।

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

  1. मैं जब मैं अपने एप्लिकेशन को खोलने अलार्म सेट:

    मैं अपने कोड में निम्नलिखित का इस्तेमाल किया।

  2. मुझे एक वेकफुलबॉडकास्ट रिसीवर का उपयोग करके अलार्म सिग्नल प्राप्त होता है। इसके onReceive() विधि में मैंने अगला अलार्म सेट किया है। मैं भी, स्टार्टवेकुलस सेवा शुरू करता हूं जो केवल पुश अधिसूचना जारी करता है, फिर स्वयं रोकता है।
  3. मैं ऑनसेसिव() के अंत में पूर्ण WakefulIntent को कॉल करता हूं।
  4. मैं दोनों का परीक्षण करने की कोशिश की: RTC_WAKEUP & ELAPSED_REALTIME_WAKEUP

नोट्स:

  • wakefulbroadcastReceiver वर्ग प्रकट में पंजीकृत है। android.permission.WAKE_LOCK
  • मैंने कोशिश की मेरे ऐप सफेद लिस्टिंग, लेकिन परिणाम एक ही
  • मैं setAlarmClock() जो भी Doze मोड के दौरान हर समय काम किया उपयोग करने की कोशिश, एक के साथ गिरा दिया/देरी अलार्म:
  • मैं के लिए अनुमतियों को जोड़ा हर 50 अलार्म। तो, यह भी सही नहीं है। और मैं नहीं चाहता कि उपयोगकर्ता हर समय ऊपर अलार्म आइकन देखें।
  • न केवल सेटएक्सएक्ट औरAllowWhileIdle() न केवल डोज़ के दौरान काम करता है, बल्कि यह काम कर रहा है जब भी भयानक सटीकता है। मुझे आमतौर पर अलार्म सिग्नल
    या तो 1-3 मिनट बाद या 1-3 मिनट पहले मिलता है।
  • मैं हुआवेई मेट 8, और एंड्रॉइड 7.0 नौगेट का उपयोग कर परीक्षण कर रहा हूं।

पी.एस: का जवाब दे कृपया सुनिश्चित करें कि आप प्रतिबंध के बारे में पता कर रहे हैं इससे पहले कि शुरू कर लगाया Android 6.0 एम और खपत के मोड।

Link1: https://developer.android.com/training/monitoring-device-state/doze-standby.html

सारांश में यह इस का कहना है:

  • आप अलार्म कि जब खपत में आग, setAndAllowWhileIdle() या setExactAndAllowWhileIdle() का उपयोग निर्धारित करने की जरूरत है।
  • setAlarmClock() के साथ सेट अलार्म सामान्य रूप से आग लगते हैं - सिस्टम उन अलार्म आग से कुछ ही समय पहले बाहर निकलता है।

अब, मुझे setExactAndAllowWhileIdle() का उपयोग करके हर 30 मिनट में सटीक अलार्म सिग्नल क्यों नहीं मिलते हैं? और, setAlarmClock() क्यों 100% विश्वसनीय नहीं है ?!

+0

यह [सहायता] (https://stackoverflow.com/a/39739886/3117966) – Nisarg

+1

मुझे एक ही समस्या है, और समान अवलोकन देख रहा है। मेरी इच्छा है कि Google से कोई भी प्लेट पर जाकर इस समस्या को ठीक कर सके। – d777

+0

@Mena क्या आपको इसके लिए समाधान मिला, मेरे पास एक ही समस्या है। – CauCuKien

उत्तर

0

मुझे आपके जैसा ही समस्या है, और समाधान के लिए लंबे समय तक खोज करता है। लेकिन मुझे एक सामान्य समाधान नहीं मिला है।

Samsung डिवाइस के लिए एक समाधान उपलब्ध है: Android AlarmManager not working on some devices when the app is closed

पहले जवाब नहीं काम करता है, लेकिन दूसरा एक :)

0

आप सही अलार्म मिल सकता है, लेकिन in Doze mode

प्रणाली जागने ताले अनदेखा करता है।

तो ऐसा लगता है जैसे कि AlarmManager.setAlarmClock केवल स्वीकार्य समाधान आप वास्तव में हर 30 मिनट में गति प्रदान करने की आवश्यकता है है। यह संभवतः सभी डोज़ मोड ऊर्जा बचत को अस्वीकार कर देगा ...

बीटीडब्ल्यू: ऐसा लगता है कि आप adb shell dumpsys alarm के साथ अलार्म देख सकते हैं।

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