AlarmManager: کلیدی تصورات اور الارم کے ساتھ کام کرنا

مصنف: IT Sectr اشاعت: 2026-03-28 مطالعے کا وقت: 8 منٹ

AlarmManager ایک Android نظام خدمت ہے جو ایپلیکیشنز کو مخصوص وقت پر کام انجام دینے کی اجازت دیتی ہے، چاہے ایپلیکیشن چل نہ رہی ہو یا ڈیوائس نیند کی حالت میں ہو۔ JobScheduler یا WorkManager کے برعکس، AlarmManager درست ٹرگرنگ کی ضمانت دیتا ہے، جو اسے الارم، کیلنڈر یاد دہانیوں اور وقت کے لحاظ سے اہم کاموں کے لیے ناگزیر بناتا ہے۔ Android Developers, 2026 کے مطابق، Android 4.4 سے شروع کرتے ہوئے، setRepeating ایک غیر درست تکرار کی طرح برتاؤ کرتا ہے، اور درست الارم کے لیے setExact یا setAlarmClock کی ضرورت ہوتی ہے۔

اہم نکات

  • AlarmManager ایک Android نظام خدمت ہے جو درست وقت پر کام انجام دینے کے لیے ہے، نیند کی حالت میں بھی کام کرتی ہے۔
  • الارم کی اقسام میں ELAPSED_REALTIME، RTC، ELAPSED_REALTIME_WAKEUP اور RTC_WAKEUP شامل ہیں — جاگنے کے ساتھ اور بغیر۔
  • setExact Android 4.4+ پر درست ٹرگرنگ کی ضمانت دیتا ہے، لیکن زیادہ بیٹری استعمال کرتا ہے۔
  • setAlarmClock واحد طریقہ ہے جسے نظام Android 6+ پر وقت پر انجام دینے کی ضمانت دیتا ہے۔
  • Android 12 سے شروع کرتے ہوئے، درست الارم کے لیے SCHEDULE_EXACT_ALARM اجازت درکار ہے۔

AlarmManager کیا ہے؟

AlarmManager ایک Android نظام خدمت ہے جو درست یا تخمینی انجام دہی کے وقت کے ساتھ کام طے کرنے کے لیے API فراہم کرتی ہے۔ یہ Android کے پہلے ورژن سے موجود ہے اور ایپلیکیشن اور ڈیوائس کی حالت سے قطع نظر، مخصوص لمحے پر کوڈ انجام دینے کا واحد قابل اعتماد طریقہ ہے۔

کام کرنے کا اصول آسان ہے: ایپلیکیشن نظام کو طے شدہ وقت کے ساتھ ایک PendingIntent بھیجتی ہے۔ جب مخصوص وقت آتا ہے، نظام رجسٹرڈ BroadcastReceiver کو Intent بھیجتا ہے یا Service شروع کرتا ہے۔ چاہے ڈیوائس نیند کی حالت میں ہو، WakeLock پروسیسر کو جاگنے اور واقعہ پر کارروائی کرنے کی اجازت دیتا ہے۔

AlarmManager کا بنیادی استعمال وہ کام ہیں جن میں درست وقت کی ضرورت ہوتی ہے: الارم، کیلنڈر یاد دہانیاں، مخصوص وقت پر طویل کارروائیاں شروع کرنا۔ ان کاموں کے لیے جہاں درستگی اہم نہیں ہے (روزانہ مطابقت پذیری)، Google WorkManager یا JobScheduler تجویز کرتا ہے کیونکہ یہ زیادہ توانائی کے موثر ہیں۔

AlarmManager کیسے کام کرتا ہے؟

AlarmManager ایپلیکیشن سے PendingIntent اور ایک ٹرگر وقت وصول کرتا ہے۔ نظام اس درخواست کو اپنے اندرونی شیڈیولر میں محفوظ کرتا ہے اور Intent پہنچانے کے لیے مخصوص وقت پر پروسیسر کو جگاتا ہے۔ ڈویلپر کو اس Intent کو سنبھالنے کے لیے پہلے سے BroadcastReceiver رجسٹر کرنا ہوگا۔

الارم کی اقسام

AlarmManager 4 اقسام کے الارم کو سپورٹ کرتا ہے: ELAPSED_REALTIME (بوٹ کے بعد کا وقت، نہیں جگاتا)، RTC (حقیقی وقت، نہیں جگاتا)، ELAPSED_REALTIME_WAKEUP (بوٹ کے بعد کا وقت، ڈیوائس کو جگاتا ہے)، اور RTC_WAKEUP (حقیقی وقت، جگاتا ہے)۔ WAKEUP ورژن ضروری ہیں اگر کام کو ڈیوائس کے سوتے ہوئے بھی انجام دینا ہو۔

قسموقتجگاتا ہےمثال
ELAPSED_REALTIMEبوٹ کے بعد سےنہیںفعال وقت کا ٹائمر
RTCUnix ٹائم اسٹیمپنہیںلاگنگ
ELAPSED_REALTIME_WAKEUPبوٹ کے بعد سےہاںمتواتر کام
RTC_WAKEUPUnix ٹائم اسٹیمپہاںالارم گھڑی

اجازتیں اور حقوق

Android 12 (API 31) سے شروع کرتے ہوئے، درست الارم (setExact) استعمال کرنے کے لیے SCHEDULE_EXACT_ALARM اجازت درکار ہے۔ صارف ترتیبات کے ذریعے اسے منسوخ کر سکتا ہے۔ ایسی ایپلیکیشنز کے لیے جنہیں ڈسپلے کے ساتھ درست الارم کی ضرورت ہے (مثال کے طور پر، گھڑی ایپس)، USE_EXACT_ALARM استعمال کیا جاتا ہے، جو انسٹالیشن کے وقت دی جاتی ہے۔

set، setRepeating اور setExact کے طریقے

AlarmManager کام طے کرنے کے لیے تین اہم طریقے فراہم کرتا ہے۔ طریقے کا انتخاب ٹرگر کی درستگی اور ڈیوائس کی بجلی کی کھپت پر اثر کا تعین کرتا ہے۔

set — ایک بار کے غیر درست ٹرگر کے لیے بنیادی طریقہ۔ نظام دیگر واقعات کے ساتھ گروپ کرنے کے لیے وقت کو کچھ منٹ تک منتقل کر سکتا ہے۔ ان کاموں کے لیے موزوں جہاں درستگی اہم نہیں ہے: ایپلیکیشن کھولنے کی یاد دہانیاں۔

setRepeating — متواتر تکرار کے لیے ایک طریقہ۔ Android 4.4 (API 19) سے، setRepeating غیر درست ہو گیا ہے — وقفے مختلف ہو سکتے ہیں۔ نظام اب مستقل مدت کی ضمانت نہیں دیتا۔ setRepeating کے بجائے، دوبارہ طے کرنے کے ساتھ setExact یا PeriodicWorkRequest کے ساتھ WorkManager استعمال کرنے کی سفارش کی جاتی ہے۔

setExact — درست ایک بار کے ٹرگر کے لیے ایک طریقہ۔ نظام ڈیوائس کو مخصوص وقت کے جتنا ممکن ہو سکے قریب جگاتا ہے۔ setAlarmClock setExact کا ایک خاص معاملہ ہے جو اسٹیٹس بار میں الارم کا آئیکن بھی دکھاتا ہے اور تمام الارم اقسام میں سب سے زیادہ ترجیح رکھتا ہے۔

kotlin
val alarmManager = getSystemService(Context.ALARM_SERVICE) as AlarmManager

// درست ایک بار کا الارم
val intent = Intent(this, AlarmReceiver::class.java)
val pendingIntent = PendingIntent.getBroadcast(
    this, 0, intent,
    PendingIntent.FLAG_IMMUTABLE
)

alarmManager.setAlarmClock(
    AlarmManager.AlarmClockInfo(
        targetTime, pendingIntent
    ),
    pendingIntent
)

AlarmManager استعمال کرنے کی مثال

ایک عام منظرنامہ مخصوص وقت پر روزانہ یاد دہانی بنانا ہے۔ اس مقصد کے لیے setExact کے ساتھ RTC_WAKEUP استعمال کیا جاتا ہے۔ ٹرگر ہونے پر، BroadcastReceiver ایک اطلاع یا Service شروع کرتا ہے۔ کارروائی کے بعد، کام کو اگلے دن کے لیے دوبارہ طے کرنا ہوگا۔

kotlin
class ReminderReceiver : BroadcastReceiver() {
    override fun onReceive(context: Context, intent: Intent?) {
        val notificationManager =
            context.getSystemService(Context.NOTIFICATION_SERVICE)
                as NotificationManager

        val notification = NotificationCompat.Builder(
            context, "reminder_channel"
        )
            .setContentTitle("یاد دہانی")
            .setContentText("کام مکمل کرنے کا وقت")
            .setSmallIcon(R.drawable.ic_reminder)
            .build()

        notificationManager.notify(1001, notification)
    }
}

روزانہ تکرار کے لیے، اگلے ٹرگر وقت کے حساب سے setExact استعمال کیا جاتا ہے۔ مختلف اقسام کی یاد دہانیوں کی شناخت کے لیے Intent میں جھنڈے بھیجے جا سکتے ہیں۔ یقینی بنائیں کہ BroadcastReceiver WAKEUP ایکشن ہینڈلنگ کے ساتھ AndroidManifest.xml میں رجسٹرڈ ہے۔

kotlin
fun scheduleDailyReminder(context: Context, hour: Int, minute: Int) {
    val calendar = Calendar.getInstance().apply {
        set(Calendar.HOUR_OF_DAY, hour)
        set(Calendar.MINUTE, minute)
        set(Calendar.SECOND, 0)
        if (before(Calendar.getInstance())) {
            add(Calendar.DAY_OF_MONTH, 1)
        }
    }

    val alarmManager =
        context.getSystemService(Context.ALARM_SERVICE) as AlarmManager

    alarmManager.setExactAndAllowWhileIdle(
        AlarmManager.RTC_WAKEUP,
        calendar.timeInMillis,
        pendingIntent
    )
}

اصلاح اور سفارشات

AlarmManager ایک طاقتور لیکن زیادہ بجلی استعمال کرنے والا آلہ ہے۔ ہر WAKEUP الارم ڈیوائس کو نیند کی حالت سے باہر لاتا ہے، بیٹری خرچ کرتا ہے۔ Google درست الارم کے استعمال کو کم سے کم کرنے اور Doze Mode پر اثر کم کرنے کے لیے Android 6+ پر setExactAndAllowWhileIdle کو ترجیح دینے کی سفارش کرتا ہے۔ درستگی کی ضروریات کے بغیر متواتر کاموں کے لیے، PeriodicWorkRequest کے ساتھ WorkManager استعمال کریں، جسے ڈیوائس جگانے کی ضرورت نہیں ہے اور ہر بار انجام دینے پر بیٹری خرچ نہیں ہوتی۔

یونٹ ٹیسٹ میں AlarmManager کی جانچ

AlarmManager کی جانچ کے لیے، Android Test Framework سے TestAlarmManager استعمال کریں۔ یہ حقیقی وقت کا انتظار کیے بغیر الارم ٹرگر کی نقل تیار کرنے کی اجازت دیتا ہے۔ Robolectric ShadowAlarmManager فراہم کرتا ہے، جو set، setExact اور setRepeating کالز کو روکتا ہے، جبری ٹرگرنگ اور طے شدہ کاموں کی تعداد کی جانچ کے لیے طریقے فراہم کرتا ہے۔ BroadcastReceiver کے یونٹ ٹیسٹ کے لیے، Robolectric.getForegroundScheduler() استعمال کریں۔ IdlingResource کے ساتھ Espresso ٹیسٹ بھی دستیاب ہیں جو انٹیگریشن ٹیسٹ میں الارم ٹرگرنگ کا انتظار کرتے ہیں۔

AlarmManager سے WorkManager میں منتقلی

اگر آپ کی ایپلیکیشن متواتر کاموں کے لیے AlarmManager استعمال کرتی ہے جنہیں درست وقت کی ضرورت نہیں ہے، تو WorkManager میں منتقلی پر غور کریں۔ کم از کم 15 منٹ کے وقفے کے ساتھ PeriodicWorkRequest setRepeating کی جگہ لے لیتا ہے، جبکہ WorkManager دوبارہ شروع ہونے کے بعد انجام دہی کو یقینی بناتا ہے، Doze Mode کو سنبھالتا ہے، اور SCHEDULE_EXACT_ALARM اجازت کی ضرورت نہیں ہوتی۔ وقت کے لحاظ سے اہم کاموں (صبح 7 بجے الارم) کے لیے، AlarmManager واحد صحیح انتخاب ہے۔ بہترین حکمت عملی یہ ہے کہ AlarmManager کو صرف setAlarmClock والے الارم کے لیے استعمال کریں اور باقی تمام پس منظر کے کام WorkManager میں منتقل کر دیں۔

درستگی کی ضروریات کے بغیر متواتر کاموں کے لیے، PeriodicWorkRequest کے ساتھ WorkManager استعمال کریں۔ درست وقت والے لیکن نیند کی حالت میں ٹرگر کرنے کے لیے اہم نہیں کاموں کے لیے — WAKEUP کے بغیر setExact استعمال کریں۔ اور صرف لازمی جاگنے والے الارم کے لیے — setAlarmClock یا RTC_WAKEUP استعمال کریں۔

Android 12+ پر SCHEDULE_EXACT_ALARM اجازت کی جانچ کرنا بھی ضروری ہے۔ اگر اجازت نہیں دی گئی، setExact عام set (غیر درست) کی طرح کام کرے گا۔ جانچ کرنے کے لیے AlarmManager.canScheduleExactAlarms() استعمال کریں۔ اگر اجازت موجود نہیں ہے، تو آپ Intent(Settings.ACTION_REQUEST_SCHEDULE_EXACT_ALARM) کے ذریعے صارف کو ترتیبات میں جانے کا اشارہ دے سکتے ہیں۔

الارم کی بحالی کے لیے BOOT_COMPLETED کو سنبھالنا

AlarmManager کی ایک انتہائی اہم خصوصیت — ڈیوائس کے دوبارہ شروع ہونے کے بعد تمام طے شدہ الارم ری سیٹ ہو جاتے ہیں۔ انہیں بحال کرنے کے لیے، آپ کو Intent.ACTION_BOOT_COMPLETED کو سنبھالنے والا BroadcastReceiver اعلان کرنا ہوگا اور onReceive طریقہ میں تمام فعال الارم کو دوبارہ طے کرنا ہوگا۔ اس کے بغیر، صارف فون بند اور آن کرنے کے بعد تمام یاد دہانیاں کھو دے گا۔

kotlin
class BootReceiver : BroadcastReceiver() {
    override fun onReceive(
        context: Context,
        intent: Intent
    ) {
        if (intent.action ==
            Intent.ACTION_BOOT_COMPLETED
        ) {
            val prefs =
                context.getSharedPreferences("alarms", 0)
            val savedTime =
                prefs.getLong("next_alarm", 0L)
            if (savedTime > System.currentTimeMillis()) {
                scheduleReminder(context, savedTime)
            }
        }
    }
}

عملی طور پر، AlarmManager الارم گھڑی ایپلیکیشنز، کیلنڈرز، ادویات کی یاد دہانیوں اور کسی بھی کام کے لیے بہترین حل ہے جہاں انجام دہی کا وقت صارف کے لیے اہم ہے۔ دیگر تمام پس منظر کے کام کے منظرناموں کے لیے، WorkManager یا JobScheduler ترجیح دی جاتی ہے۔

AlarmManager اور WorkManager کے درمیان انتخاب کرتے وقت، اس اصول پر عمل کریں: اگر صارف نے واضح طور پر دوپہر 2:30 بجے یاد دلانے کو کہا — تو setAlarmClock کے ساتھ AlarmManager استعمال کریں۔ اگر کام “تقریباً ایک بار فی گھنٹہ” انجام دینا چاہیے — PeriodicWorkRequest کے ساتھ WorkManager زیادہ توانائی کے موثر اور قابل اعتماد ہوگا۔

اکثر پوچھے گئے سوالات

setExact اور setAlarmClock میں کیا فرق ہے؟

دونوں طریقے درست ٹرگرنگ کو یقینی بناتے ہیں، لیکن setAlarmClock اضافی طور پر اسٹیٹس بار میں الارم کا آئیکن دکھاتا ہے اور نظام کو مطلع کرتا ہے کہ یہ صارف کا الارم ہے۔ Android 6+ پر، setAlarmClock کو Doze Mode سے استثنیٰ حاصل ہے، جبکہ setExact میں تاخیر ہو سکتی ہے۔

ڈیوائس کے دوبارہ شروع ہونے کے بعد AlarmManager کیسے برتاؤ کرتا ہے؟

دوبارہ شروع ہونے کے بعد، تمام طے شدہ الارم ری سیٹ ہو جاتے ہیں۔ انہیں بحال کرنے کے لیے، آپ کو BOOT_COMPLETED ایکشن کے لیے ایک BroadcastReceiver رجسٹر کرنا ہوگا اور onReceive میں تمام کاموں کو دوبارہ طے کرنا ہوگا۔ اس کے بغیر، ڈیوائس آن ہونے کے بعد کوئی الارم نہیں چلے گا۔

Android 4.4+ پر setRepeating کیوں تجویز نہیں کیا جاتا؟

API 19 سے، setRepeating غیر درست ہو گیا ہے — نظام بجلی بچانے کے لیے وقفوں کو منتقل کر سکتا ہے۔ اس کے بجائے، دستی دوبارہ طے کرنے کے ساتھ setExact یا PeriodicWorkRequest کے ساتھ WorkManager استعمال کریں، جو زیادہ پیش قیاسی رویہ فراہم کرتا ہے۔

Android 12+ پر درست الارم کے لیے کونسی اجازت درکار ہے؟

setExact کے لیے، SCHEDULE_EXACT_ALARM اجازت درکار ہے، جسے صارف ترتیبات میں دے یا منسوخ کر سکتا ہے۔ گھڑی کے انٹرفیس ڈسپلے کے ساتھ setAlarmClock کے لیے، USE_EXACT_ALARM استعمال کیا جاتا ہے، جو اسٹور سے انسٹالیشن پر خود بخود دی جاتی ہے۔

کیا PendingIntent کے بغیر AlarmManager استعمال کیا جا سکتا ہے؟

نہیں، AlarmManager ہمیشہ PendingIntent کے ذریعے کام کرتا ہے۔ یہ BroadcastReceiver کے لیے PendingIntent.getBroadcast، Service کے لیے PendingIntent.getService یا Activity کے لیے PendingIntent.getActivity ہو سکتا ہے۔ PendingIntent کے بغیر، نظام ایپلیکیشن کو واقعہ نہیں پہنچا سکتا۔

خلاصہ

  • AlarmManager ڈیوائس جگانے کی صلاحیت کے ساتھ درست وقت پر کام انجام دینے کے لیے ایک Android نظام خدمت ہے۔
  • چار اقسام کے الارم — ELAPSED_REALTIME، RTC، ELAPSED_REALTIME_WAKEUP اور RTC_WAKEUP — مختلف منظرناموں کو کور کرتے ہیں۔
  • setExact اور setAlarmClock جدید Android ورژنز پر درست ٹرگرنگ کے لیے واحد طریقے ہیں۔
  • setRepeating Android 4.4+ پر متروک ہے — دستی دوبارہ طے کرنے کے ساتھ setExact استعمال کریں۔
  • SCHEDULE_EXACT_ALARM اجازت Android 12+ پر درست الارم کے لیے لازمی ہے۔
  • WorkManager یا JobScheduler وقت کی ضروریات کے بغیر غیر درست پس منظر کے کاموں کے لیے ترجیح دی جاتی ہے۔
  • مت بھولیں ڈیوائس کے دوبارہ شروع ہونے کے بعد الارم بحال کرنے کے لیے BOOT_COMPLETED کو سنبھالنا۔

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں