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 分钟)以节省电池电量。但是我从来没有等过这么久,所以看起来连重复都没有。
我希望 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 分钟)以节省电池电量。但是我从来没有等过这么久,所以看起来连重复都没有。