我想要一个Alarmmanager在2秒之后第一次发射,然后每10秒发射一次。
它在2秒后第一次没有开火。 5到10秒之后的东西。而且它根本不重复。
这是我的代码:
Alarmmanager:
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");
}
}
答案 0 :(得分:3)
答案 1 :(得分:1)
am.setRepeating(AlarmManager.RTC_WAKEUP, **cal_alarm.getTimeInMillis()**, 1000*60*5 , pendingIntent);
我认为您正在使用System.currentTimeMillis(),因为您遇到了这个问题。尝试从您设置警报的代码中获取时间。上面代码中的第三个参数是重复时间。您可以将其设置为10秒。
答案 2 :(得分:0)
这是我的好消息。
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);
}