【问题标题】:No alarm fired with setRepeating when setting triggerAtMillis to System.currentTimeMillis()将 triggerAtMillis 设置为 System.currentTimeMillis() 时没有使用 setRepeating 触发警报
【发布时间】:2015-10-30 10:00:42
【问题描述】:

我尝试每 5 分钟发出一次警报,但在将 triggerAtMillis 参数设置为我当前的系统时间时,我的经理没有发出任何警报。知道如何解决这个问题吗?

  manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
  Intent alarmIntent = new Intent(this, AlarmReceiver.class);
 pendingIntent = PendingIntent.getBroadcast(this, 0, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT);
  int alarmType = AlarmManager.ELAPSED_REALTIME_WAKEUP;
  long intervalTime = 5*60*1000;
  manager.setRepeating(alarmType, System.currentTimeMillis(),intervalTime,pendingIntent);

这是我启动闹钟时的代码。因此,当我将 triggerAtmillis 设置为 triggerTime 时,它​​确实会触发,但并非每 5 分钟一次。

public class AlarmReceiver extends BroadcastReceiver {
Context context = null;
@Override
public void onReceive(Context arg0, Intent arg1) {
    context = arg0;
    System.out.println("test");
    NotificationCompat.Builder mBuilder =
            new NotificationCompat.Builder(context)
                    .setSmallIcon(R.drawable.ic_launcher)
                    .setContentTitle("test")
                    .setContentText("test");
    Intent resultIntent = new Intent(context, MainActivity.class);
    TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
    stackBuilder.addParentStack(MainActivity.class);
    stackBuilder.addNextIntent(resultIntent);
    PendingIntent resultPendingIntent =
            stackBuilder.getPendingIntent(
                    0,
                    PendingIntent.FLAG_UPDATE_CURRENT
            );
    mBuilder.setContentIntent(resultPendingIntent);
    mBuilder.setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_LIGHTS | Notification.DEFAULT_VIBRATE);
    NotificationManager mNotificationManager =
            (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);

    mNotificationManager.notify(1, mBuilder.build());
}

我的接收器类

【问题讨论】:

    标签: android triggers notifications alarmmanager repeatingalarm


    【解决方案1】:

    更改警报类型

    int alarmType = AlarmManager.ELAPSED_REALTIME_WAKEUP;
    

    int alarmType = AlarmManager.RTC_WAKEUP;
    

    根据api doc,ELAPSED_REALTIME_WAKEUP表示

    自启动以来的时间,包括睡眠

    RTC_WAKEUP 表示

    UTC 挂钟时间

    【讨论】:

    • 谢谢!这修复了它:)
    猜你喜欢
    • 1970-01-01
    • 2013-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多