【问题标题】:Best way to trigger BroadcastReceiver触发 BroadcastReceiver 的最佳方法
【发布时间】:2015-06-02 05:58:13
【问题描述】:

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

此广播接收器的触发时间

  1. 应该在每天 13:00 触发。
  2. 在 13:00 初始触发之后。它应该每 30 秒触发一次。
  3. 应该在 14:00 后每 30 秒停止一次触发。

我尝试了以下方式

使用 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));

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

【问题讨论】:

  • 这太疯狂了。所以换句话说,你想阻止设备休眠一小时并因此耗尽大部分电池?
  • 好吧,根据我们的客户要求,我们需要在那一小时内每 30 秒从服务器中提取一次数据。注意:推送通知不是一个选项。
  • 每 30 秒开始广播。您可以将警报管理器设置为在 1300 和下一个在 1400 进行广播,以停止每 30 秒的广播。那么你所做的是正确的,但正如 Xaver Kapeller 所说,它肯定会耗尽设备电池。所以建议在有更新数据时从服务器实现推送通知,因此在收到推送通知后,您可以从服务器获取数据并执行必要的操作
  • 那么您的客户不了解如何为移动设备构建应用程序。如果设备只是在 13:00 到 14:00 之间闲置,而当您在 15:00 回到设备时电池几乎完全耗尽,您的客户会怎么说?你是开发者,你是专家。客户(几乎)永远不会拥有相同的技术专长,因此您有责任做出技术决策。客户不能仅仅因为你应该更了解而决定你如何实现东西。
  • @RajenRaiyarela,我清楚地知道它会耗尽用户的电池。我尝试实现推送通知。但是,推送通知的传递机制并不可靠。因为我需要每 30 秒接收一次数据(我们需要发送快速推送通知,即每 30 秒每个用户 1 个推送通知)。推送通知并非始终发送。

标签: android timer broadcastreceiver alarmmanager


【解决方案1】:

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

查看此链接

First Link

Second Link

【讨论】:

  • 有很多例子你可以在谷歌上搜索。 AlarmManager 是触发广播接收器的最佳方式。您不需要运行任何服务或后台进程来触发广播接收器
  • 请检查我编辑的问题。感谢您的回答。
  • 我已经根据你最初提出的问题给出了答案,警报管理器是一个好方法,你可以使用更多的方法是检查这个链接,它是 CountDownTimer [点击这里] (developer.android.com/reference/android/os/CountDownTimer.html)
猜你喜欢
  • 2014-07-13
  • 1970-01-01
  • 2019-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多