在android中,是否可以在单个应用程序中使用多个具有不同重复值的AlarmManager?

时间:2012-11-23 07:00:12

标签: android android-service alarmmanager android-alarms android-2.3-gingerbread

我正在使用android 2.3 **

开发移动设备和平板电脑的应用程序

我想做一些操作,即Operation-A和Operation-B。两者都表现得很糟糕。 我想重复操作-A和操作-B每隔1小时进行一次
操作-A在操作-B <10>的10分钟之前执行
当时间为0.00,1.00,2.00,3.00,....,23.00(我正在使用铁路时间时,执行操作-B。因此不会混淆上午或下午)。
当时间为0.50,1.50,2.50,3.50,......,23.50时执行操作-A
上述场景可以在android中使用。
所有人都对上述情况提出了自己的想法。

我打算使用AlarmManager。 AlarmManager是android系统服务。它用于每1小时通知应用程序。
我打算使用AlarmManager进行操作-A,使用另一个AlarmManager进行操作-B。
我的疑问是,在android中,是否可以在一个应用程序中使用多个具有不同重复值的AlarmManager?

你欢迎所有的想法。

1 个答案:

答案 0 :(得分:1)

是的,这项任务将在具有重复功能的AlarmManager的帮助下完成。首先,您需要创建两个接收器类,它们将接收事件。然后需要设置重复警报。

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) {

     }

    }

在menifest中,你需要声明如下的类。

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