【发布时间】:2026-01-28 19:15:02
【问题描述】:
我将 AlarmManager 设置如下:
Intent startIntent = new Intent(context, MyService.class);
PendingIntent pendingIntent = PendingIntent.getService(context, 0, startIntent, 0);
alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 3000, pendingIntent);
Log.d(TAG, "Current time is " + System.currentTimeMillis());
Log.d(TAG, "Next alarm time is: " + (alarmManager.getNextAlarmClock().getTriggerTime() - System.currentTimeMillis()));
它显示
当前时间是1499909678520
下次报警时间为:55521479
我认为 RTC 是使用 System.currentTimeMillis() 的 UTC 时间。下一个警报应该是小于 3000 的数字吗?
仅供参考,在我的服务中,我会这样处理:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i(TAG, "MyService started");
}
我的服务永远不会启动。怎么了?
【问题讨论】:
-
getNetAlarmClock()返回预定的下一个闹钟。我无法从您发布的代码中看出您是否安排了任何(developer.android.com/reference/android/app/…)。alarmManager.set()创建一个意图广播。您将需要一个广播接收器来接收待处理的意图并对其采取行动(developer.android.com/reference/android/app/…, long, android.app.PendingIntent))。请注意 警报是一个 Intent 广播,它会发送到您注册的广播接收器
标签: java android service alarmmanager utc