【问题标题】:pending intent / alarm not working second time待定意图/警报第二次不起作用
【发布时间】:2016-06-16 17:28:21
【问题描述】:

我的代码是这样的,点击按钮我执行

  Calendar calendar = Calendar.getInstance();
                calendar.setTimeInMillis(System.currentTimeMillis()+(1000*5));

                Intent intent = new Intent(LogoFrontScreen.this,Doubletest.class);
                PendingIntent alarmIntent =    PendingIntent.getBroadcast(LogoFrontScreen.this,2,intent,PendingIntent.FLAG_UPDATE_CURRENT);

                alarmMgr.setExact(AlarmManager.RTC_WAKEUP,
                        calendar.getTimeInMillis(), alarmIntent);
                PendingIntent alarmIntent1 =    PendingIntent.getBroadcast(LogoFrontScreen.this,2,intent,PendingIntent.FLAG_UPDATE_CURRENT);

                alarmMgr.setExact(AlarmManager.RTC_WAKEUP,
                        calendar.getTimeInMillis()+(2000), alarmIntent1);

然后在接收器上有一个日志,但该日志只被调用一次,为什么会发生这种情况?

【问题讨论】:

    标签: android alarmmanager android-pendingintent


    【解决方案1】:

    代替

    alarmMgr.setExact
    

    试试

    alarmMgr.setInexactRepeating
    

    为了安排多个警报,您每次创建时都需要使用唯一的 id

    PendingIntent alarmIntent =    PendingIntent.getBroadcast(LogoFrontScreen.this,2,intent,PendingIntent.FLAG_UPDATE_CURRENT);
    

    getBroadcast 的第二个参数(即在您的情况下为 2)对于每个警报都需要不同。

    希望它能解决你的问题:)

    【讨论】:

    • 但是我设置了2000ms后,为什么我有问题
    • 更新了我的答案,希望对您有所帮助:)
    • 但 Pending 具有当前更新的标志,因此它会给出相同的未决意图两次,这正是我所需要的。
    • 您已经创建了两次 PendingIntent(alarmIntent 和 alarmIntent1)。只需要使用不同的 id 创建它,如果对于 alarmIntent,您使用 2 作为 id,那么对于 alarmIntent1,使用 3 作为 id。希望这个小小的改变能解决你的问题:)
    • 我正在模拟同样的事情发生两次的情况。它应该可以工作,为什么它不能使用相同的ID。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多