Android में Alarm Manager कैसे काम करता है? वास्तविक उदाहरण के साथ Kotlin पर पूर्ण विश्लेषण
\n\nक्या आपने कभी सोचा है कि आपके फोन में अलार्म कैसे काम करते हैं? या कोई नोट्स ऐप आपको ठीक 14:30 पर मीटिंग की याद कैसे दिलाता है? Android में इसके लिए एक शक्तिशाली सिस्टम सेवा जिम्मेदार है — Alarm Manager। हालाँकि इसके नाम का अनुवाद "अलार्म मैनेजर" होता है, वास्तव में यह एक सार्वभौमिक कार्य नियोजक है जो आपको एक निश्चित समय पर कोड चलाने की अनुमति देता है, भले ही आपका ऐप छोटा हो या फोन स्लीप मोड में हो।
\n\nAlarm Manager Example विषय StackOverflow पर सबसे लोकप्रिय प्रश्नों में से एक है (हजारों व्यू और दर्जनों प्रश्न)। और यह आश्चर्य की बात नहीं है: शुरुआती लोग अक्सर PendingIntent, BroadcastReceiver और set(), setRepeating() या setExact() जैसी अनेक विधियों में भ्रमित हो जाते हैं। इस लेख में, हम Kotlin पर एक वास्तविक कार्यशील उदाहरण का विश्लेषण करेंगे जिसे आप तुरंत अपने प्रोजेक्ट में लागू कर सकते हैं। कोई फालतू बात नहीं — केवल कोड और स्पष्टीकरण।
Alarm Manager क्या है और इसकी आवश्यकता क्यों है?
\n\nAlarm Manager Android की एक सिस्टम सेवा है जो आपके ऐप को एक निर्धारित समय पर कार्य करने की अनुमति देती है। मुख्य विशेषता यह है कि यह आपके ऐप के जीवनचक्र से स्वतंत्र रूप से काम करता है। आप अलार्म सेट कर सकते हैं, ऐप बंद कर सकते हैं, स्क्रीन बंद कर सकते हैं — और Alarm Manager फिर भी नियत समय पर कार्य करेगा।
\n\nउपयोग के सामान्य परिदृश्य:
\n- \n
- ईवेंट की याद दिलाना (मीटिंग, जन्मदिन) \n
- सर्वर के साथ डेटा का आवधिक सिंक्रनाइज़ेशन \n
- विलंबित सूचनाएँ (जैसे, "2 घंटे में पानी पीना न भूलें") \n
- शेड्यूल के अनुसार बैकग्राउंड कार्य करना \n
यह समझना महत्वपूर्ण है: Alarm Manager मिलीसेकंड अंतराल के लिए सटीक टाइमर नहीं है। इसके लिए Handler या Coroutines का उपयोग किया जाता है। Alarm Manager ऊर्जा बचत को ध्यान में रखते हुए सिस्टम स्तर पर काम करने के लिए अनुकूलित है।
मुख्य घटक: PendingIntent और BroadcastReceiver
\n\nकोड लिखने से पहले, दो प्रमुख अवधारणाओं को समझ लेते हैं जिनके बिना Alarm Manager काम नहीं करता।
\n\nPendingIntent — यह एक "विलंबित इरादा" है। आप कार्रवाई को तुरंत शुरू नहीं करते, बल्कि इसे एक विशेष कंटेनर में पैक करते हैं, जिसे Alarm Manager भविष्य में निष्पादित करेगा। कल्पना करें कि आप एक कूरियर को एक सीलबंद लिफाफा दे रहे हैं जिसमें निर्देश है: "ठीक 15:00 बजे खोलें"। लिफाफा PendingIntent है।
\n\nBroadcastReceiver — यह प्रसारण संदेशों का रिसीवर है। जब Alarm Manager सक्रिय होता है, तो यह एक प्रसारण संदेश (broadcast) भेजता है, जिसे आपका BroadcastReceiver पकड़ता है। इसमें ही आप वह कोड लिखते हैं जो अलार्म बजने पर निष्पादित होना चाहिए।
\n\nचरण-दर-चरण उदाहरण: Kotlin पर अलार्म बनाना
\n\nआइए एक सरल ऐप लिखें जो बटन दबाने के 10 सेकंड बाद एक सूचना दिखाता है। यह उदाहरण StackOverflow पर एक लोकप्रिय उत्तर के वास्तविक कोड पर आधारित है।
\n\nचरण 1. BroadcastReceiver बनाएँ
\n\nएक नया क्लास बनाएँ जो अलार्म के सक्रिय होने को संभालेगा:
\n\nimport android.content.BroadcastReceiver\nimport android.content.Context\nimport android.content.Intent\nimport android.widget.Toast\n\nclass AlarmReceiver : BroadcastReceiver() {\n override fun onReceive(context: Context, intent: Intent) {\n // यह कोड तब निष्पादित होगा जब अलार्म बजेगा\n Toast.makeText(context, "अलार्म बज गया!", Toast.LENGTH_LONG).show()\n }\n}\n\nअभी हम केवल एक Toast दिखा रहे हैं। वास्तविक ऐप में, यहाँ सूचना बनाना, सेवा शुरू करना या कोई अन्य कोड हो सकता है।
\n\nचरण 2. मेनिफेस्ट में BroadcastReceiver पंजीकृत करें
\n\nसिस्टम को हमारे रिसीवर के बारे में बताने के लिए, इसे AndroidManifest.xml में पंजीकृत करना होगा:
<receiver android:name=".AlarmRecei