Search code examples
androidbroadcastreceiver

How to run BroadcastReceiver after every minute?


I am developing an application to monitor the network after every minute. i am using a BroadcastReceiver for this.

I want to execute the BroadcastReceiver after every minute.

How can I do it? can i use Thread.sleep() in BroadcastReceiver?

Is it okay to continuously keep running BroadcastReceiver in android?


Solution

  • BroadcastReceievers are designed to run only when some broadcast is received (System broadcast or user defined broadcast). In case you want to run some code every minute, you can create a service and schedule it for every minute run using an Alarm Manager. You can start the service from your broadcast receiver using alarm manager and it will run every minute.

    In the onRecieve() method of your broadcast receiver, use code similar to the below given:

    PendingIntent service = null; 
    Intent intentForService = new Intent(context.getApplicationContext(), YourService.class);
    final AlarmManager alarmManager = (AlarmManager) context
                    .getSystemService(Context.ALARM_SERVICE);
    final Calendar time = Calendar.getInstance();
    time.set(Calendar.MINUTE, 0);
    time.set(Calendar.SECOND, 0);
    time.set(Calendar.MILLISECOND, 0);
    if (service == null) {
     service = PendingIntent.getService(context, 0,
                        intentForService,    PendingIntent.FLAG_CANCEL_CURRENT);
            }
    
            alarmManager.setRepeating(AlarmManager.RTC, time.getTime()
                    .getTime(), 60000, service);