Alarmmanager 第一次触发但不重复

Alarmmanager fires first time but doesn't repeat

我希望 Alarmmanager 在 2 秒后第一次触发,然后每 10 秒触发一次。

恰好 2 秒后它没有第一次触发。 5 到 10 秒后。而且它根本不重复。

这是我的代码:

警报管理器:

Intent intent = new Intent(this, BackgroundService.class);
final PendingIntent pendingintent = PendingIntent.getBroadcast(getApplicationContext(), 0, intent, 0);

final AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC, System.currentTimeMillis() + 2 * 1000, 10 * 1000, pendingintent);

清单:

<receiver android:process=":remote" android:name=".BackgroundService"/>

BackgroundService.java:

public class BackgroundService extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.d("BackgroundService", "BackgroundService onReceive");
    }
}
am.setRepeating(AlarmManager.RTC_WAKEUP, **cal_alarm.getTimeInMillis()**, 1000*60*5 , pendingIntent); 

我认为您使用的是 System.currentTimeMillis(),因此您遇到了这个问题。尝试从您设置了闹钟的代码中获取时间。上面代码中的第三个参数是重复时间。您可以将其设置为 10 秒。

这对我有帮助

if (android.os.Build.VERSION.SDK_INT >= 19) {
                alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
            } else {
                alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
            }

知道了:

IDE 表示:第三个值将被强制设置为 60000(1 分钟)以节省电池电量。但是我从来没有等过这么久,所以看起来连重复都没有。

Snap is here