触发BroadcastReceiver的最佳方式

时间:2015-06-02 05:58:13

标签: android timer broadcastreceiver alarmmanager

在我的移动应用程序中。我需要触发一个BroadcastReceiver,它会显示一些弹出/系统通知。

此BroadcastReceiver的触发时间

  1. 每天应该在13:00触发。
  2. 在13:00初始触发后。它应该每30秒触发一次。
  3. 它应该在14:00后每30秒停止一次。
  4. 我尝试了以下方式

    使用2 BroadcastReceiver的

    使用AlaramManager

    调用BroacastReceiver 1
        Intent intent = new Intent("broadcast.receiver.one.action");
        PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0,
                intent, 0);
        AlarmManager manager = (AlarmManager) context
                .getSystemService(Context.ALARM_SERVICE);
        manager.setRepeating(AlarmManager.RTC_WAKEUP, oneAmCalenderObject.getTimeInMillis(),AlarmManager.INTERVAL_DAY, pendingIntent);
    

    BroadcastReceiver 1将于每天13:00开始,并包含一个计时器,它将每30秒启动一次BroacastReciever 2.

     timer.schedule(new TimerTask() {
            public void run() {
                if (isLessThanTwoPM()) {
                    callBroadcastReceiverTwo();
                } else {
                    timer.cancel();
                }
    
            }
        }, 0, 30 * (1000 * 1));
    

    我想知道,如果有更好的方法。

1 个答案:

答案 0 :(得分:0)

使用AlarmManager,您可以在此处安排触发广播的时间,直到必须触发,然后您也可以将其停止

查看此链接

First Link

Second Link