Alarmmanager第一次触发但不重复

时间:2015-10-15 13:25:58

标签: android alarmmanager

我想要一个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");
    }
}

3 个答案:

答案 0 :(得分:3)

知道了:

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

Snap is here

答案 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);
            }