Search code examples
androidandroid-servicealarmmanagerandroid-alarmsandroid-2.3-gingerbread

In android, is it possible to use more than one AlarmManager with different repeat values in a single application?


I'm developing an application for mobile and tablet using android 2.3**

I want to do some operations namely Operation-A and Operation-B. Both perform some pocess.
I want to repeat the Operation-A and Operation-B is performed every 1 hour time interval
Operation-A is performed before the 10 minutes of Operation-B
Operation-B is performed when the time is 0.00,1.00,2.00,3.00,....,23.00 (I'm using railway time. So it is not confused for am or pm).
Operation-A is performed when the time is 0.50,1.50,2.50,3.50,....,23.50
The above scenarios is possible in android or not.
All are give your ideas for the above scenarios.

I'm planning to use AlarmManager. AlarmManager is android system service. It is used to notify the application every 1 hour.
I plan to use an AlarmManager for Operation-A and another AlarmManager for Operation-B.
My doubt is ,In android is it possible to use more than one AlarmManager with different repeat values in a single application?


All your ideas are welcome.


Solution

  • Yes this task will done with help of AlarmManager with reperating functionality. First you need to create two receiver class which will receive events . and then need to setup repeating alarm .

    private void setAlarm1()
        {
            AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
            Calendar calendar = Calendar.getInstance();
            calendar.setTimeInMillis(System.currentTimeMillis());
            calendar.add(Calendar.HOUR, 1);
            Intent intent = new Intent(this, AlarmReceiver.class);
            PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,
            intent, PendingIntent.FLAG_CANCEL_CURRENT);
    
            am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 1000*60*60, pendingIntent);
        }
        private void setAlarm2()
        {
            AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
            Calendar calendar = Calendar.getInstance();
            calendar.setTimeInMillis(System.currentTimeMillis());
            calendar.add(Calendar.MINUTE, 50);
            Intent intent = new Intent(this, AlarmReceiver_1.class);
            PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,
            intent, PendingIntent.FLAG_CANCEL_CURRENT);
    
            am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 1000*60*50, pendingIntent);
        }
    

    public class AlarmReceiver extends BroadcastReceiver {
    
    
         @Override
         public void onReceive(Context context, Intent intent) {
    
         }
    
        }
    public class AlarmReceiver_1 extends BroadcastReceiver {
    
    
         @Override
         public void onReceive(Context context, Intent intent) {
    
         }
    
        }
    

    In menifest, you need to declare the classes as below.

     <receiver android:name=".AlarmReceiver" />
                 <receiver android:name=".AlarmReceiver_1" />